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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步