$b = 3;

$c = $a & $b;

echo $c; // 1

php按位与PHP 中的位运算 Ruby

十进制1 转成二进制 0001

十进制3 转成二进制 0011

按手册说的 末了得出 0001, 0001 转成十进制数便是

按位异或 ^

$a = 1;

$b = 2;

$c = $a ^ $b;

echo $c; //3

这里不是纯挚的相加关系

十进制1 转成二进制 0001

十进制2 转成二进制 0010

按位^ 末了得出 0011 //便是各个位数 不相同的都设为1

按位或 |

$a = 1;

$b = 3;

$c = $a | $b;

echo $c; //3

十进制1 转成二进制 0001

十进制3 转成二进制 0011

按位| 末了得出 0011 ,十进制 表示 3

按位左移 <<

$a = 1;

$b = 2;

$c = $a << $b;

echo $c ; //4

a << b就表示把a转为二进制后左移b位(在后面添b个0)。
例如1的二进制为0001,而000100转成十进制是4,那么1 << 2 = 4。
可以看出,a < b的值实际上便是a乘以2的b次方,由于在二进制数后添一个0就相称于该数乘以2。

常日认为a << 1比a 2更快,由于前者是更底层一些的操作。
因此程序中乘以2的操作请只管即便用左移一位来代替。

按位右移 >>

$a = 1;

$b = 2;

$c = $a >> $b;

echo $c; //0

和<<相似,a >> b表示二进制右移b位(去掉末b位),相称于a除以2的b次方(取整)