标签: java bit-manipulation
我尝试在java中执行-1 >> 1,但打印的结果仍然是-1一开始,我认为这是因为符号扩展算术右移的性质。但通过其他测试,我发现-1 >> [0, 64]为-1。为什么会这样?
-1 >> 1
-1
-1 >> [0, 64]
答案 0 :(得分:4)
这是因为符号扩展。 -1由仅包含1的位序列表示。因此,无论bithift的第二个操作数如何,使用带符号扩展的右移始终会产生所有位1的序列,即-1。