0001 1001
另如 ASCII 編碼中的字母 f 為
0110 0110
所謂的位元運算 (bit operation) ,就是逐位元進行比較,例如以上兩項編碼做邏輯或的位元運算
0001 1001 or 0110 0110
結果會是
0111 1111
PHP 的位元運算子 (bitewise operstor) 如下列表
| 運算子 | 功能 | 範例 |
|---|---|---|
| & | 逐位元且 | $a & $b |
| | | 逐位元或 | $a | $b |
| ^ | 逐位元互斥或 | $a ^ $b |
| ~ | 逐位元非 | ~ $a |
| << | 向左位移 | $a << $b |
| >> | 向右位移 | $a >> $b |
以下例子示範位元運算子的使用
<?php
$a = 5;
$b = 3;
echo (~$a) . "\n";
echo ($b << 2) . "\n";
echo ($b >> 2) . "\n";
echo ($a & $b) . "\n";
echo ($a | $b) . "\n";
echo ($a ^ $b) ;
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:e08.php
功能:示範 PHP 程式
作者:張凱慶
時間:西元 2013 年 2 月 */
?>執行結果如下

由於 5 用二進位 32 位元的表示為
0000 0000 0000 0000 0000 0000 0000 0101
取其補數變為
1111 1111 1111 1111 1111 1111 1111 1010
換算成十進位為 -6 。類似的 3 用二進位 32 位元的表示為
0000 0000 0000 0000 0000 0000 0000 0011
向左位移 2 個位元,變為
0000 0000 0000 0000 0000 0000 0000 1100
空出的位元補上 0 ,就變成十進位數字的 12 ,向左位移 2 個位元,就是原數乘上 22 ,也就是說乘以 4 。由於向右位移直接把位元移開,原空出的位元補上 0 ,就變成
0000 0000 0000 0000 0000 0000 0000 0000
所以兩個運算結果都是 0 。且、或、互斥或的運算,以二進位表示如下
101 and 011 = 001
101 or 011 = 111
101 xor 011 = 110
101 or 011 = 111
101 xor 011 = 110
因此 3 且 5 ,結果會是 1 ; 3 或 5 ,結果為 7 ; 3 互斥或 5 ,結果則是 6 。
| 中英文術語對照 | |
|---|---|
| 資料 | data |
| 位元 | bit |
| 整數 | integer |
| 位元運算 | bit operation |
| 位元運算子 | bitewise operstor |
您可以繼續參考
運算式
相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁
參考資料
http://www.php.net/manual/en/language.operators.bitwise.php
沒有留言:
張貼留言