binary - 如果减去二进制溢出怎么办
问题描述
我正在尝试做这个等式 -122 -(7),结果我得到 = 01111111
我对 -122 使用了 2 的补码并得到了 = 10000110。我对 7 使用了 2 的补码,所以我可以进行加法并得到 = 11111001。当我将两者相加时,我得到 = 01111111 和进位 1。我不这么认为是 -129 的正确答案
解决方案
忽略溢出位
位宽为 8 的二进制补码的范围为 [-128, 127]。
这个二进制数学显示 (-122) + (-7) 等于什么。
122 => 01111010
7 => 00000111
-122 => 10000110
-7 => 11111001
+ +
------ ----------
127 1 01111111
01111111 => 127
在这个例子中,我们看到有一个溢出位指定-256。-256 超出 [-128, 127] 的 8 位范围。大多数实现都会删除这个溢出位,所以结果是127。
延伸阅读
如果您好奇,还有其他 stackoverflow 答案可以更详细地研究二进制补码溢出。
推荐阅读
- android - 导入 kotlinx.android.synthetic.main.activity_main 不起作用
- android - 执行 A/B 测试时何时为 Firebase 获取 RemoteConfig
- css - wordpress 古腾堡 alignwide 和 alignfull 问题
- java - Quartz 作业未通过 XMLSchedulingDataProcessorPlugin 启动
- angular - 重定向到 Angular 应用程序之外但在同一个域中的 URL
- python - wxPython FileDialog 防止某些文件被拾取
- angular4-forms - 在 Angular-4 中单击 AddMore 按钮验证模板驱动的表单
- javascript - 如何通过收音机和 Javascript 在 HTML 中使用更改位置
- ionic-framework - 在 ipcRenderer.on 事件处理程序中设置全局变量在电子上运行离子不起作用
- compiler-construction - ocaml编译器是使用编译器前端模块parse来解析源码还是使用ocamlyacc来解析源码?