一:位運算基本操作知識點
1. 左移操作 a << b
將A的二進制表示的每一位向左移B位,左邊超出的位截掉,右邊不足的位補0
A = 1100 B = 2
A << B = 110000
每左移一位,數值乘以2。
2.右移操作 A >> B , A >>> B
右移操作分爲邏輯右移,和算術右移
算術右移是帶符號的右移,邏輯右移是不帶符號的右移。
算術右移:將A的二進制表示的每一位向右移B位,右邊超出的位截掉,左邊不足的位補符號位的數。
邏輯右移:將A的二進制表示的每一位向右移B位,右邊超出的位截掉,左邊不足的位補0。
C語言:只有邏輯右移 A >> B
JAVA 和 Python中:算術右移 A >> B , 邏輯右移 A >>> B
B = 2
A >> B = 11111111111111111111111111100000
A >>> B = 00111111111111111111111111100000
每右移一位,數值除以2
3.按位與操作 a & b
將A和B的二進制表示的每一位進行與操作,只有兩個對應的二進制位都爲1時,結果位才爲1,否則爲0.
A = 001010
B = 101100
A & B = 001000
4.按位或操作 a | b
將A和B的二進制表示的每一位進行或操作,只要兩個對應的二進制位有一個爲1,結果位就爲1,否則爲0.
A = 001010
B = 101100
A | B = 101110
5.按位非操作 ~ a
將A的二進制表示每一位進行取反操作,如果對應的二進制位爲0,結果位爲1,否則爲0.
A = 00000000000000000000000000001010
~A = 11111111111111111111111111110101
6.按位異或操作 a ^ b
將A和B的二進制表示的每一位進行異或操作,如果對應的二進制位不同,結果位爲1,否則爲0.
A = 001010
B = 101100
A ^ B = 100110