php基础(6)_基本数据类型进制转换及注意事项

整形类型
整形类型:保存整数数值(范围限制),4个字节(一字节八位)存储数据,最大就是32位:(unsigned int 0~4294967295int -2147483648~2147483647):但是在php中默认是有符号类型(区分正负数)

    在PHP中提供了四种整形的定义方式:十进制定义,二进制定义,八进制定义和十六进制定义:

         十进制(正常数字) :逢10进1,能够出现的数字是0-9
         二进制(以0b(0B)开头):逢2进1,能够出现的数字是0-1
         八进制(以0开头):逢8进1,能够出现的数字是0-7
         十六进制(以0x(0X)开头):逢16进1,能够出现的数字是0-9以及a-f,a表示10,以此类推

<?php
    $a1 = 110;            // 编译结果: 110            
    $a2 = 0b110;          //          6
    $a3 = 0110;           //          72
    $a4 = 0x110;          //          272
    echo $a1."\n".$a2."\n".$a3."\n".$a4;   //默认php输出数据自动转化为10进制输出
?>

         进制转换:手动转换

              10进制转二进制:取出最大的2的N次方
                   10 --》8+2 --》 2^3 + 2^1 --》从二进制最右侧开始,第一个是2的0次幂,第二个是2的1次幂,以此类推,按照对应的指数次幂位置补1,没有的补0

                   00000000 00000000 00000000 00001010    1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10

              二进制转10进制:从右侧开始,将对应的第几位作为2的指数,然后将所有的结果相加

                   00000000 00000000 00000000 00101011
                   00101011 --》 从右侧开始: 1*2^0+1*2^1+0*2^2+1*2^3+0*2^4+1*2^5 = 43

         当然PHP中不需要用户这么复杂的去计算,提供了很多的函数进行转换
              Decbin():十进制转二进制
              Decoct(): 十进制转八进制
              Dechex(): 十进制转十六进制
              Bindec(): 二进制转十进制

<?php
    var_dump(decbin(43));     // 编译结果:string(6) "101011"
    var_dump(Bindec(101011)); //         int(43)
?>

浮点类型
浮点型:小数类型以及超过整形所能存储范围的整数(不保证精度),精度范围大概在15个有效数字左右
         浮点型定义有两种方式:
          $f = 1.23;
          $f = 1.23e10; //科学计数法,其中e表示底(10),相当于1.23*10^10

<?php
    $f1 = 1.23;           //编译结果:float(1.23)
    $f2 = 1.23e10;        //        float(12300000000) 
    $f3 = PHP_INT_MAX+1;  //        float(2147483648)
    var_dump($f1,$f2,$f3);//其中PHP_INT_MAX表示整形最大值,整形超过自身存储的大小之后会用浮点型存储
?>

          简单说明浮点数为什么同样的字节数存储数据,但是却能表示更大的数据呢?

               00000000 00000000 00000000 00000000 --》11111111 11111111 11111111 11111111(其中绿色1代表符号位,整形最大值,所有位数都是有效数据)

          浮点数:红色表示符号位绿色7位算的结果是10的指数,后面三个字节存储表示具体数值

               00000000 000000000 00000000 00000000 --》11111111 11111111 11111111 11111111

     综上所述:尽量不要用浮点数做精确判断,浮点数保存的数据不够精确,而且在计算机中凡是小数基本上存的都不准确,如:

<?php     
    $f4 = 0.7;              //编译结果:0.7
    $f5 = 2.1;              //        0.7
    $f6 = $f5 /3;	    //        bool(false)
    echo $f6."\n".$f4."\n"; 
    var_dump($f4 == $f6);   //== 为比较运算符,false表示不相等
?>

布尔类型
布尔类型:两个值true和false,通常是用于判断比较

<?php
    $b1 = true;          //编译结果:bool(true)
    $b2 = FALSE;         //        bool(false)
    var_dump($b1,$b2);
?>

    在进行某些数据判断的时候,需要特别注意类型转换(手册查看)
         Empty():判断数据的值是否位"空",不是NULL,如果位空返回true,不为空返回false
         isset():判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值