PHP | 运算符

概念

位运算符允许对整型数中指定的位进行求值和操作。

命令

例子变量 $a = 1; //8位二进制 0000 0001

​ $b = 3; //8位二进制 0000 0011

命令符号 名称 例子 作用 结果 二进制
& And(按位与) $a & $b $a与$b中都为1的位,设为1反之则设为0 1 0000 0001
| Or(按位或) $a | $b $a与$b中任何一个为1的位设为1 3 0000 0011
^ Xor(按位异或) $a ^ $b $a与$b中一个为0,一个为1的位,设为1 2 0000 0010
~ Not(按位取反) ~ $a 将 $a 中为 0 的位设为 1,反之亦然。 -2 这个单独分析一下
<< shift left(左移) $a << 1 $a往左移一位,也可以理解为每移动一次都乘以2 2 0000 00
>> shift right(右移) $a >> 1 $a往右移一位,也可以理解为每移动一次都除以2 0 0000 0000

分析 ~

首先 1的32位二进制是

原值 :0000 0000 0000 0000 0000 0000 0000 0001

取反: 1111 1111 1111 1111 1111 1111 1111 1110

由于最前面的数为1,符号位为1,即为负数,所以,以其正值的补码形式表示为:(符号位不变,按位取反,末尾加1)

1000 0000 0000 0000 0000 0000 0000 0001
这里末尾加1之后是2,所以满2进1,所以变成
1000 0000 0000 0000 0000 0000 0000 0010
即输出值为-2

想生活,不想谋生
原文地址:https://www.cnblogs.com/Daneil/p/13607287.html