【发布时间】:2017-01-31 16:20:27
【问题描述】:
我尝试在java中做-1 >> 1,但打印的结果仍然是-1,一开始我以为这是因为算术右移的符号扩展性质。但是通过额外的测试,我发现-1 >> [0, 64]是-1。为什么会这样?
【问题讨论】:
-
它是算术右移的符号扩展性质。
-1是0xffffffff;最左边的位是1,所以当你算术右移时你会得到更多的1位,所以它保持0xffffffff。 -
@AdrianColomitchi 不是那个问题的重复。在这种情况下,答案与移位运算符仅使用移位量的低 5 位这一事实有关,因此
1>>32与1>>0相同。这个问题是关于符号扩展的。我确定这是一个骗局,只是不是那个问题。
标签: java bit-manipulation