PHP中位运算及原码,反码和补码

在遇到位运算时不要害怕那一场串的0和1,其实正因为他是0和1,所以他们比0~10单纯,坏事可没他们能干,所以他们都是很好相处的。而且当前的计算机系统都是二进制系统,他们简单,稳定,可靠。

二进制和十进制,八进制,十六进制的转换,详见另外一篇《不同进制数间的转换》。


下面是位运算符及其解释:


$a & $b And(按位与)将把 $a $b 中都为 1 的位才设为 1,其他的的设为0.
$a | $b Or(按位同或)将把 $a $b 中任何一个为 1 ,则设为1
$a ^ $b Xor(按位异或)将把 $a $b 中任意一个为 1 另一个为 0 的位设为 1,如果两个数一样则设为0.
~ $a Not(按位取反)$a 中0变1,1变0.
$a << $b Shift left(左移)$a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移)$a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

<< 和 >> 是位移运算符,在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时左边的将被挤出,抛弃,意味着符号位也被抛弃,右边以0补上;右移时右边的将被挤出,抛弃,左边以符号位补上,所以符号位得以保留。


-----!--------

在计算机中数值运算都是采用数值的二进制补码来进行运算的。所以我们在进行位运算时,记得将数值转换成二进制补码再进行运算,且运算所得结果也是补码,所以如果要得到十进制的真值,需要再将得到的补码结果转换回去。

正数的原码,反码,补码都是一样的。

负数的反码 = 原码的符号位不变,其他的取反;负数的补码 = 反码 + 1.

二进制数的最高位是符号位,0表示正数,1表示负数。


将补码转换成原码的方法:

一!如果是符号位为零,那么此数是正数,那么原码就等于补码。

二!如果符号位是为一,那么此数是负数,那么有三种方法:

1)有补码退出反码,再推出原码。

2)原码就等于对该补码再求补码。

3)或者符号位不变,然后从低位(右边)开始一直往左走,直到遇到第一个1,那么这个1不变,然后这个1之后遇到的每个数都取反(除了符号位)。


PHP 不支持无符号整数。


PHP 中没有整除的运算符。3/2将显示float型的1.5     但是值可以舍弃小数部分强制转换为integer,如使用(int)(7/2) = 3,强制转换到话是不管是多少都是取其整数部分,舍弃小数部分,或者使用round()函数可以更好地进行四舍五入。 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值