位运算
& 与
相对应位都是1,则结果为1,否则为0
同1得1
a: 0001 0001
b: 0000 0001
0000 0001
java
a = 0b00000011
b = 0b00000001
c = a & b = 0b00000001 = 1
| 或
相对应位都是0,则结果为0,否则为1
同0得0
a: 0001 0001
b: 0000 0001
0001 0001
java
a = 0b00000000
b = 0b00001111
c = a | b = 0b00001111 = 15
^异或
相对应位值相同,则结果为0,否则为1 同0异1
a: 0001 0001
b: 0000 0001
0001 0000
java
(byte) 1 ^ 0b00000001 == 0 = true
(byte) 2 >> 1 ^ 0b00000001 = 0 = true
(byte) 2 ^ 0b00000010 = 0 true
~取反
按位取反运算符翻转操作数的每一位,即0变成1,1变成0 java
a: 0001 0001
b = ~a
b: 1110 1110
<<左移
丢弃左边位
a = 0b00010001
a << 3
a = 0b10001000
>>右移
丢弃右边位
a = 0b00010001
a >> 2
a = 0b00000100