11
Q
没有溢出的减法?
A
回答
8
要回答你的第一个问题,为0x80000000(2,147,483,648)代表符号整数最小的32位值。 2,147,483,647是最大值。当使用Two's Complement存储时,最大值的大小比最小值的大小小1。单凭(-y)
不能代表超过最大值(1)。的(x-y)
最终整数值在范围内(考虑到x
是负的),并且可以通过一个32位的整数来表示。
要回答你的第二个问题,减法是通过转换数量减去到其加法逆实现。鉴于溢出的可能性在这种情况下,你的编译器可以通过执行-((-x)+y)
得到正确的结果为(x-y)
。然而,这是纯粹的猜测(这是我能想到的唯一安全方法)。
相关问题
- 1. 在x64上没有溢出溢出
- 2. 为什么减法与static_cast溢出?
- 3. 减2负整数(补)从来没有溢出
- 4. jqGrid没有正确溢出
- 5. 有没有办法隐藏垂直溢出的表格?
- 6. JScrollPane没有出现,元素溢出
- 7. ActionBarSherlock项目没有出现在溢出
- 8. Hadoop - 减少溢出记录的数量
- 9. 似乎没有理由的VBA溢出
- 10. 溢出没有足够的流畅
- 11. f32没有实施减法?
- 12. 有没有办法让跨平台溢出:滚动
- 13. 有没有办法让行在引导程序中溢出
- 14. 有没有办法监听div溢出事件?
- 15. 在x86中的进位/溢出和减法
- 16. 溢出检测减去2个多头
- 17. 溢出隐藏不会削减文本
- 18. 图像没有溢出隐藏:隐藏
- 19. 溢出:隐藏丝毫没有掩饰
- 20. 在C#中int没有溢出异常?
- 21. 滚动div,溢出没有JavaScript
- 22. 没有为每个元素溢出
- 23. mdl步进器没有响应溢出
- 24. 检测是否溢出没有javascript
- 25. Python的numpy减法没有负数(4-6给出254)
- 26. 有没有办法从堆栈溢出下载所有的问题和答案?
- 27. 有没有办法减少WCF带宽?
- 28. 有没有办法进一步减少?
- 29. CLISP溢出乘法
- 30. 乘法时溢出
你怎么知道它呢? – lindelof
“计算机系统,程序员的角度”问题的解决方案2.32(第87页) ” ......我们将有-y也等于三甲基铟等功能tadd_ok会考虑那里是负溢出随时x为负。在事实上,xy不会因这些情况而溢出......“ – Yuu