PHP匿點之巧用位運算子 和

2021-07-22 03:51:27 字數 811 閱讀 4825

先來回顧下來自官方的位運算子說明:

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的整除運算轉換為位移運算,可提高程式的執行效率

PHP匿點之位運算按位取反

我們看示例 a 8 var dump a 先不要看結果,試想下結果是多少?然後我們執行下看看,納尼?和我們設想的不一樣,奇怪了 什麼原因呢 於是我們翻看php中文手冊 a not 按位非 將 a 中為 0 的位設為 1,反之亦然。我只是簡單的理解為 0變1,1變0。原來按位取反以十進位制輸出並不是簡...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...

PHP 位運算子

位運算子允許對整型數中指定的位進行置位。如果左右引數都是字串,則位運算子將操作字元的 ascii 值。echo 12 9 輸出退格字元 ascii 8 1 ascii 49 9 ascii 57 8 echo hallo hello 輸出 ascii 值 0 4 0 0 0 a e 4 echo 2...