首頁  >  文章  >  後端開發  >  PHP運算子(四)」位元運算子「實例講解

PHP運算子(四)」位元運算子「實例講解

怪我咯
怪我咯原創
2017-04-12 15:17:243419瀏覽

我們已經講解了PHP運算子中的“php算術運算子”,“php字串運算子”,“賦值運算子” ,今天就來跟大家詳細介紹一下PHP運算子中的「位元運算子」

位元運算子在PHP中不常用到,但是他的用處還是很大,下面的內容我們會舉例說明一下位元運算子的用法。

位元運算子是指對二進位位元從低位元到高位元對齊後進行運算,它允許對整數型數中指定的位元進行求值和操作。

在PHP中的為運算子如下表所示

##< ;左移$m >>

下面我們用範例來上面一下上表中的運算子

<?php

$m=1;                //1=0 00000001
$n=2;                 //2=00000010

$mn=$m&$n;
echo $mn."<br/>";

$mn=$m^$n;
echo $mn."<br/>";

$mn=$m|$n;
echo $mn;

?>

程式碼運行結果:

PHP運算子(四)」位元運算子「實例講解

範例解釋:

$m&$n :  二者皆為1 時為1 ,否則為0。即把 $a 和 $b 中都為 1 的位元設為 1 ,否則設為 0 。

 00000001 ← $m
& 00000010 ← $b

比較結果為00000000,所以輸出0


$m^$ n :在按位亦或的過程中,不同為1,相同為0。
     00000001  ← $m

^  00000010    ← $n

因此結果為00000011,進而輸出3。


$m|$n: 在位元或的過程中,有1為1,全0為0,

00000001  ← $m

 |  00000010    ← $n

則結果為00000011,所以輸出3

上面的例子講了“按位或”,“按位或”,“按位位異或”,下面我們再來看一下後面的三個示例


按位非或按位取反示例,代碼如下

<?php
$m = 2;
$m1 = ~$m;
echo $m1;
?>

運行結果

PHP運算子(四)」位元運算子「實例講解

此時我們的運行結果為-3,這裡要注意。

註:在計算機中,負數以其正值的補碼形式表達。

1: 2的32位原碼為0000 0000 0000 0000 0000 0000 0000 0010

2: 按位取反後為1111 1111 1111 1111 1111 1111 1111 1101

由於最前面的數為1,符號位為1,即為負數,所以,以其正值的補碼形式表示為:(符號位不變,按位取反,末尾加1)

1000 0000 0000 0000 0000 0000 0000 0011

所以輸出為-3



#左移右移程式碼範例

PHP運算子(四)」位元運算子「實例講解

左移右移程式碼範例

<?php
$m = 12;     // 12=00001100
$n = 3;     // 3=00000011

$mn= $m << $n;
echo $mn ."<br/>";

$mn= $m >> $n;
echo $mn ; 
?>

執行結果:



範例解釋:


$m:將$m 中的位元向左移動$n 次(每一次移動都表示“乘以2”,即“乘以2$b ”)。
       0000 1100 ← $m


0110 0006

#$m>>$n
:將$m中的位元向右移動$n 次(每一次移動表示“除以2”,即“乘以2 -$b ”)。

       0000 1100 ← $m


0000 0001 = 1

######上面的內容就是PHP運算中的「位元運算子」的詳細內容,如果有什麼不懂的,可以關注我們PHP中文網,在上面進行留言,我們將第一時間給你解答或是在PHP中文網搜索,或許能找到你想的。下一節,我們將詳細介紹###PHP運算中的邏輯運算子###。 ###
#運算子 說明 #範例
& 按位與 $m & $n
 | 按位或 $m | &$n
#^ 依位異或 $m ^ $n
~ 位元非或位元取反 $m ~ $n
##右移 $m >> $n

以上是PHP運算子(四)」位元運算子「實例講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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