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

posted @   lasu  阅读(48)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示