首頁 > 後端開發 > php教程 > 詳解PHP位元運算符

詳解PHP位元運算符

藏色散人
發布: 2023-04-09 17:30:01
轉載
5079 人瀏覽過

推薦:《PHP影片教學

位元運算子

位元運算子是指對二進位位元從低位到高位對齊後進行運算。

##不同為1 ,相同為0~按位元取反<<#向左移位>>
符號 作用 範例 個人理解
& 位元與 $m & $n 全1為1,否則為0
| 以位元或 $m | $n 全0為0,有1為1
^ 以位異或 #$m | $n
~$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;
登入後複製

<<運算子

#rrreee

左移運算的實質是將對應的資料的二進位值逐位左移若干位,並在空出的位置上填0,最高位溢出並捨棄。


3的32位元原碼為,0000 0000 0000 0000 0000 0000 0000 0011

左移一位:0000 0000 0000 0000 000 00000 000001 根據手冊描述可以看出位元運算可以看出向左移一位,則是實現乘2運算。由於位移運算的運算速度比乘法的 運算速度高很多。因此在處理資料的乘法運算的時,採用位移運算可以獲得較快的速度。

提示 將所有對2的乘法運算轉換為位移運算,可提高程式的運作效率。

>>運算子右移一位,和<<運算符,類似,只不過這個是右移,此處不在做過多解釋。 ######更多程式相關知識,請造訪:###程式設計教學###! ! ###

以上是詳解PHP位元運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板