<<:表示左移,不分正负数,低位补0。
如:8<<2 -> 8<<1=16 -> 16<<1=32
-8<<2 -> -8<<1= -16 -> -16>>1= -32
>>:带符号右移。正数右移高位补0,负数右移高位补1。
如:8>>2 -> 8>>1=4 -> 4>>1=2
-8>>2 -> -8>>1= -4 -> -4>>1= -2
>>>:无符号右移。无论是正数还是负数,高位通通补0。
4=1111 1111 1111 1111 1111 1111 1111 1100,
>>1=1111 1111 1111 1111 1111 1111 1111 1110=-2,
>>>1=0111 1111 1111 1111 1111 1111 1111 1110=2147483646,而不是-2。
-----------
-1=1111 1111 1111 1111 1111 1111 1111 1111,
>>1=1111 1111 1111 1111 1111 1111 1111 1111=-1,
>>>1=0111 1111 1111 1111 1111 1111 1111 1111=2147483647,而不是-1。
简单理解:
a << 1 相当于a乘以2,正负数据符号不变。
a >> 1 相当于除以2,正负数据符号不变。
>>> 不考虑高位的正负号,正数的 >>> 等同于 >>
本文详细讲解了计算机中的位运算符,包括<<(左移)、>>(有符号右移)和>>>(无符号右移)的工作原理及示例,强调了它们在正负数处理上的区别。通过实例说明,帮助理解在Java等编程语言中这些操作的实际应用。
https://blog.youkuaiyun.com/meism5/article/details/90055481?utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link
278

被折叠的 条评论
为什么被折叠?



