我尝试做-1 >> 1
在java中,但打印的结果仍然是-1
一开始,我认为这是因为算术右移的符号扩展性质。但通过额外的测试,我发现-1 >> [0, 64]
是 -1
。为什么会发生这种情况?
最佳答案
这是因为符号扩展。 -1
用仅包含1的比特序列表示。因此,使用带符号扩展的右移始终会产生所有位均为 1 的序列,即 -1
,无论位移的第二个操作数如何。
关于java - 为什么在java中位移位对-1不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650043/