为什么在java中没有位移位-1?

时间:2016-09-22 22:51:08

标签: java bit-manipulation

我尝试在java中执行-1 >> 1,但打印的结果仍然是-1一开始,我认为这是因为符号扩展算术右移的性质。但通过其他测试,我发现-1 >> [0, 64]-1。为什么会这样?

1 个答案:

答案 0 :(得分:4)

这是因为符号扩展。 -1由仅包含1的位序列表示。因此,无论bithift的第二个操作数如何,使用带符号扩展的右移始终会产生所有位1的序列,即-1