位元運算子允許對整數數中指定的位元進行求值和運算。
php中的位元運算子如下表
範例 | 名稱 | 結果 |
---|---|---|
#$a & $b |
And(位元與) | 將把和中都為1 的位元設為1。 |
$a | $b |
#Or(位元或) | 將會把和中任何一個為1 的位元設為1。 |
$a ^ $b |
#Xor(位元異或) | 將把和中一個為1 另一個為0 的位元設為1。 |
~ $a |
Not(位元取反) | 將中為0 的位設為1,反之亦然。 |
$a 96d59601019b188ea7e2a6962e52c73e> $b |
Shift right(右移) | 將中的位元向右移動次(每一次移動表示「除以2」)。 |
位移在 PHP 中是數學運算。向任何方向移出去的位元都被丟棄。左移時右側以零填充,符號位元移走表示正負號不被保留。右移時左側以符號位填充,表示正負號保留。
要注意資料型別的轉換。如果左右參數都是字串,則位元運算子將對字元的 ASCII 值進行操作。
PHP 的 ini 設定 error_reporting 使用了位元的值,
提供了關閉某個位元的真實範例。要顯示除了提示等級
之外的所有錯誤,php.ini 中是這樣用的: E_ALL & ~E_NOTICE
常見四個位元運算子:&(位元與),|(位元或),^(位元異或),~(按位元取反)
& (位元與):對應位元同時為1時,在&運算後則為1,否則為0
|(位元或):對應位元有一個為1時,在|運算後則為1,同為0時則為0
^(位元異或):對應位元不同時為1時,在^運算後為1,同時為0時則為0,同時為1時^運算後也是0
~(位元取反):$a+(~$a)=-1
在計算機中,負數以其正值的補碼形式表達。
在這裡我們就要知道三個概念了,原碼,反碼和補碼。
原碼:一個整數,依照絕對值大小轉換成的二進位數,稱為原碼。
8的原碼為:0000 0000 0000 0000 0000 0000 0000 1000
反碼:將二進制數位取反,所得的新二進制數稱為原二進制數的反碼。取反操作指:1變0, 0變1。
8位元取反:1111 1111 1111 1111 1111 1111 1111 0111
# 補碼:反碼加1稱為補碼。也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1
反碼加1:1000 0000 0000 0000 0000 0000 000 1001;這樣就得負數的正值的補碼形式。也就是-9了。
範例
<?php $m=8; $n=12; $p=-109; $mn=$m&$n; echo $mn."<br>"; $mn=$m|$n; echo $mn."<br>"; $mn=$m^$n; echo $mn."<br>"; $mn=~$m; echo $mn."<br>"; $mn=~$p; echo $mn."<br>"; ?>
輸出結果:
8 12 4 -9 108
以上是詳解php 中的位元運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!