首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从较小的二进制数中减去一个较大的无符号二进制数

问从较小的二进制数中减去一个较大的无符号二进制数
EN

Stack Overflow用户
提问于 2012-03-01 20:06:05
回答 2查看 26.5K关注 0票数 12

我正在选修计算机组织和汇编语言课程。本周我们实验室的书面部分有一个问题让我很困惑。问题是..。

减去以下无符号二进制数字(显示借方和溢出位)。不要转换为二人的补码。

代码语言:javascript
复制
 0101 0111 1101
-1110 1011 0110
 --------------

我意识到答案是-1001 0011 1001,但我很难想出如何借到这个减法,从较小的数字中减去它,并展示我的作品。在我的一生中,当我从一个小的数字中减去一个大的数字时,我已经扭转了这个问题,而是从较大的数字中减去了较小的数字,并在结果的前面添加了一个负号。我问教授,他说他想用书写的方式解决这个问题。我不允许通过从较大的数字中减去较小的数字来解决这个问题,并像通常那样否定。我还没有在网上找到任何从更小的二进制数字中减去更大的无符号二进制数的例子。

如果有人能向我描述如何在这种情况下执行减法,我会非常感激的。

更新:@Alex是正确的。教授在找

代码语言:javascript
复制
0110 1100 0111 (1735)

谢谢大家。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-02 01:33:58

不管哪个数字更大,哪个更小,你也是这样做的。

代码语言:javascript
复制
 bb b      bb   <- borrows
 0101 0111 1101 (1405)
-1110 1011 0110 (3766)
 --------------
 0110 1100 0111 (1735?)

现在,如果您想要一个适当的差异,您需要考虑溢出,因为上面的结果不包括符号位:

代码语言:javascript
复制
 b bb b      bb   <- borrows
 0 0101 0111 1101 (1405)
-0 1110 1011 0110 (3766)
 ----------------
 1 0110 1100 0111 (-2361 signed 2's complement)

实际上,CPU并不关心从什么中减去什么。在整数加减法中采用了相同的算法,而且该算法对于有符号整数和无符号整数也是一样的。您只需正确解释结果和进位和溢出标志。就这样。

票数 9
EN

Stack Overflow用户

发布于 2017-01-12 22:47:19

简单地减去两个二进制数,然后取结果的2的补充。瞧!

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

https://stackoverflow.com/questions/9523210

复制
相关文章

相似问题

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