龙空技术网

PHP 中的位运算

笔记之道 170

前言:

而今我们对“php1到10乘”可能比较看重,各位老铁们都想要了解一些“php1到10乘”的相关文章。那么小编同时在网络上收集了一些有关“php1到10乘””的相关内容,希望大家能喜欢,兄弟们快快来学习一下吧!

位运算 实质上是对二进制数进行计算,位运算分为 &,|,^,~,<<,>> 6种,如下表格:

例子名称结果$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。$a | $bOr(按位或)将把 $a 和 $b 中任何一个为 1 的位设为 1。$a ^ $bXor(按位异或)将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。~ $aNot(按位取反)将 $a 中为 0 的位设为 1,反之亦然。$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。$a >> $bShift right(右移)将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。按位与 &

$a = 1;

$b = 3;

$c = $a & $b;

echo $c; // 1

十进制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次方(取整)

标签: #php1到10乘