您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關PHP位運算符有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
位運算符
位運算符是指對二進制位從低位到高位對齊后進行運算。
符號 | 作用 | 舉例 | 個人理解 |
---|---|---|---|
& | 按位與 | $m & $n | 全1為1,否則為0 |
| | 按位或 | $m | $n | 全0為0,有1為1 |
^ | 按位異或 | $m | $n | 不同為1,相同為0 |
~ | 按位取反 | ~$m | |
<< | 向左移位 | $m << $n | |
>> | 向右移位 | $m >> $n |
&運算符
<?php $m = 1; $n = 2; $mn = $m & $n; echo $mn;
運行結果為0
解釋:將1,2分別轉換為二進制為
00000001
00000010
在按位與的過程中,按位比較,全1為1,比較結果為00000000,所以輸出0
|運算符
<?php $m = 1; $n = 2; $mn = $m | $n; echo $mn;
運行結果為3,同樣,轉換成如上的二進制
00000001
00000010
在按位或的過程中,有1為1,全0為0,則結果為00000011,所以輸出3
^運算符
<?php $m = 1; $n = 2; $mn = $m ^ $n; echo $mn;
運行結果為3,同樣,轉換成如上的二進制
00000001
00000010
在按位亦或的過程中,不同為1,相同為0,所以結果為00000011,進而輸出3。
~運算符
<?php $m = 2; $m1 = ~$m; echo $m1;
運行結果為-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 $m = 3; $m1=$m << 1; echo $m1;
運算結果為6
左移運算的實質是將對應的數據的二進制值逐位左移若干位,并在空出的位置上填0,最高位溢出并舍棄。
3的32位原碼為,0000 0000 0000 0000 0000 0000 0000 0011
左移一位:0000 0000 0000 0000 0000 0000 0000 0110
所以為6
根據手冊描述可以看出位運算可以看出向左移一位,則是實現乘2運算。由于位移操作的運算速度比乘法的 運算速度高很多。因此在處理數據的乘法運算的時,采用位移運算可以獲得較快的速度。
提示 將所有對2的乘法運算轉換為位移運算,可提高程序的運行效率。
>>運算符
右移一位,和<<運算符,類似,只不過這個是右移,此處不在做過多解釋。
關于“PHP位運算符有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。