基礎演算法之位移運算子

2021-08-25 22:57:42 字數 642 閱讀 6542

最近在追hashmap的原始碼,看到有這一運算,由於忘記了便去網上找的資料,放在這裡便於以後學習

《左移運算,>>右移運算,還有不帶符號的位移運算 >>>.

左移的運算規則:按二進位制形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。

計算過程已1<<30為例,首先把1轉為二進位制數字 0000 0000 0000 0000 0000 0000 0000 0001

然後將上面的二進位制數字向左移動30位後面補0得到 0010 0000 0000 0000 0000 0000 0000 0000

最後將得到的二進位制數字轉回對應型別的十進位制

程式執行結果

另外兩種的運算規則為

>>運算規則:按二進位制形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1.

>>>運算規則:按二進位制形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同

位移運算子

位移運算子 直接操作二進位制數,運算速率更快。按位非 not 把1變成0,把0變成1 超出運算範圍,變成負數 var a 25 var b a b 25的 二進位制數 00000000000011001 轉化後 11111111111100010 結果為 26 總結非運算 乙個數與自身的取反值相加等...

java 位移運算子

import org.junit.test 1 左移運算子 2 右移運算子 測試正數 3 右移運算子 測試負數 4 無符號右移 測試正數 5 無符號右移 測試負數 public class weiyitest 右移運算子 測試正數 1010001001 test public void test2 ...

c 位移運算子

左移運算子 將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。例如 1100100 2 110010000,1100100左移兩位後為 1100100口口,補0後為110010000。右移運算子 將第乙個運算元向右移動第二個運算元所指定的位數,空出的位置補0。例如 1100100 2 0...