位運算

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)。


2、位移在 PHP中是數學運算。向任何方向移出去的位都被丟棄。
      左移時右側以零填充,符號位被移走意味着正負號不被保留,符號位隨字符變化而變化。
      右移時左側以符號位填充,符號位不變。
3、注意:

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

發佈了80 篇原創文章 · 獲贊 18 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章