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