Java 位运算

154 阅读1分钟

位运算

&

相对应位都是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

【知乎热门】可参考链接