我试图理解移位操作符的概念,并测试了以下代码:
15 >> 2;
- 15 >> 2
第一个语句的结果是3,作为15/4=3,但是第二个语句的结果是-4。
我知道-15的二进制数是11110001,当我们向右移动2的时候,我们有11111100,这是-4。但我不理解,为什么结果与简单的除法不同,即-15/4= -3,而不是-4?
请告诉我为什么会发生这种事?
发布于 2019-02-21 18:43:22
Java使用二补来表示负数。
在两个补码符号二进制数上右移n位的效果是把它除以2n,但它总是四舍五入(向负无穷远)。这与通常在有符号整数除法中进行舍入的方式不同(整数除法为0)。
https://stackoverflow.com/questions/54812761
复制相似问题