1、 位运算一览表
例子 名称 结果 |
|
|
$a & $b | And(按位与) | 将把 $a 和 $b 中都为 1的位设为 1。 | ||
$a | $b | Or(按位或) | 将把 $a 和 $b 中任何一个为 1的位设为 1。 | ||
$a ^ $b | Xor(按位异或) | 将把 $a 和 $b 中一个为 1另一个为 0 的位设为 1。 | ||
~ $a | Not(按位取反) | 将 $a 中为 0的位设为 1,反之亦然。 | ||
$a << $b | Shift left(左移) | 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 | ||
$a >> $b | Shift right(右移) | 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”,若不是整除则则为比值小的最近一个整数,如值为-4.12 结果为-5;如值为4.23 /0.5 结果为4 /0)。 |
php没有无符号数,也就是说,php中的数都是有符号的;
计算机中的运算都是以补码的形式参加运算的;
4、php位运算过程如下:(以8位计算机为例)
以2&-7=?计算为例:
(1)、计算2的补码:
2->原码:00000010->反码:00000010->补码:00000010
(2)、计算-7的补码:
-7->原码:10000111->反码:11111000->补码:11111001
(3)、计算2&-7的补码->反码->原码
2&-7补码:00000000->反码:00000000->原码:00000000
(4)、有2&-7原码得到2&-7的值
所以2&-7 = 0