程序中所有數在計算機內存中都是以二進制的形式存儲的。位運算就是直接對【整數】在內存中的二進制位進行操作。
二進制位運算中 0 表示false,1 表示true,空位都補 0。
與運算 &
數字按二進制轉換後,相同位的兩個數字都爲 1,則爲 1,若有一個不爲 1,則爲 0。即給相同位上的數字做邏輯與運算。
如:6&11=2
=> 0110
1011
0010
或運算 |
相同位上的數字做邏輯或運算。
異或運算 ^
相同位不同則爲1,相同則爲0。
取反運算 ~
二進制位取反。需注意有符號的取反。
左移運算 <<
a << b 表示把 a 轉爲二進制後左移 b 位(在後面添加 b 個 0),實際是 a*(2 的 b 次方)
符號右移運算 >>
a >> b 表示把 a 轉爲二進制後右移 b 位(去掉末 b 位),相當於 a/(2 的 b 次方) 取整
無符號右移運算 >>>