Java位运算符
Java位运算符 &,|,~,^,<<,>>,>>>
int a = 129 = (二进制)0000 0000 0000 0000 0000 0000 1000 0001
int b = 128 = (二进制)0000 0000 0000 0000 0000 0000 1000 0000
与(&)
a&b = 128 = (二进制)0000 0000 0000 0000 0000 0000 1000 0000
两个都为1结果才是1
或(|)
a&b = 129 = (二进制)0000 0000 0000 0000 0000 0000 1000 0001
两个有一个为1就是1
非(~)
~a = -130 = (二进制)1111 1111 1111 1111 1111 1111 0111 1110
为1就是0,为0就是1
异或(^)
a^b = 1 = (二进制)0000 0000 0000 0000 0000 0000 0000 0001
位相同就是0,不同就是1
左移位(<<)
a<<1 = 258 = (二进制)0000 0000 0000 0000 0000 0001 0000 0010
等同于a乘以2的1次方
右移位(>>)
a>>1 = 64 = (二进制)0000 0000 0000 0000 0000 0000 0100 0000
等同于a除以2的1次方
逻辑右移位(>>>)
int c = -129 = (二进制)1111 1111 1111 1111 1111 1111 0111 1111
c>>>1 = 2147483583 = (二进制)0111 1111 1111 1111 1111 1111 1011 1111
c>>1 = -65 = (二进制)1111 1111 1111 1111 1111 1111 1011 1111
a>>>1 = 64 = (二进制)0000 0000 0000 0000 0000 0000 0100 0000
如果是正数,那么和>>没区别;如果是负数,带着符号位右移,高位补0

浙公网安备 33010602011771号