首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么移位算子>>中负数的结果与常规除法不同?

为什么移位算子>>中负数的结果与常规除法不同?
EN

Stack Overflow用户
提问于 2019-02-21 17:17:33
回答 1查看 575关注 0票数 2

我试图理解移位操作符的概念,并测试了以下代码:

代码语言:javascript
运行
复制
15 >> 2;    
- 15 >> 2 

第一个语句的结果是3,作为15/4=3,但是第二个语句的结果是-4。

我知道-15的二进制数是11110001,当我们向右移动2的时候,我们有11111100,这是-4。但我不理解,为什么结果与简单的除法不同,即-15/4= -3,而不是-4?

请告诉我为什么会发生这种事?

EN

回答 1

Stack Overflow用户

发布于 2019-02-21 18:43:22

Java使用二补来表示负数。

在两个补码符号二进制数上右移n位的效果是把它除以2n,但它总是四舍五入(向负无穷远)。这与通常在有符号整数除法中进行舍入的方式不同(整数除法为0)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54812761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档