首頁  >  文章  >  後端開發  >  詳解php 中的位元運算符

詳解php 中的位元運算符

怪我咯
怪我咯原創
2017-06-20 13:28:163034瀏覽

位元運算子允許對整數數中指定的位元進行求值和運算。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn