先來回顧下來自官方的位運算符說明:
1、<< 位左移
實質是將對應的數據的二進制值逐位左移若干位,並在空出的位置上填0,最高位溢出並捨棄。
例 如
$a=10;
$b=$a<<2;
//$b=40
根據手冊描述可以看出位運算可以看出向左移一位,則是實現乘2運算。
性能:
位移操作的運算速度比乘法的 運算速度高很多。因此在處理數據的乘法運算的時,採用位移運算可以獲得較快的速度。
提示:將所有對2的乘法運算轉換爲位移運算,可提高程序的運行效率
2、>> 位右移
實質是將對應的數據的二進制值逐位右移若干位,並捨棄出界的數字。如果當前的數爲無符號數, 高位補零。
例如:
$a = 25;//11001
b=a>>2;//等價於:11001 >> 01100, 01100 >> 00110.那麼110 =》 6,即25/4 = 6
b=(0000 0000 0000 0110)=6
如果當前的數據爲有符號數,在進行右移的時候,根據符號位決定左邊補0還是補1。
如果符號位爲0,則左 邊補0;但是如果符號位爲1,則根據不同的計算機系統,可能有不同的處理方式。
可以看出位右移運算,可以實現對除數爲2的整除運算。
提示: 將所有對2的整除運算轉換爲位移運算,可提高程序的運行效率