2

我正在解决二进制减法并卡在一个点上。我无法理解如何从较小的数字中减去较大的数字。

我的操作数是 0.111000*2^-3 和 1.0000*2^-3。

我很容易减去小数部分,但是当来到 MSB 时,我不知道该怎么做。我应该从哪里借来执行操作。我知道从 0 中减去 1 需要借位,它会将符号位变为负数。但在这里,存储并不受到关注。我的问题在于操作本身。谁能解释一下结果以及如何执行它?

谢谢

4

2 回答 2

2

很晚了,但是有同样的问题,所以把这个放在这里给别人,有同样的问题。

如果你的问题只出在分数部分,你可以试试这个方法:

  1.000
- 0.111
-------

第1步:添加两个二进制数的符号位,以便您可以添加。

 0 1.000
 1 0.111
 -------  +
 1 1.111

现在反转并加一以将 2 的补码转换为符号大小:

1 1.111 -> 0.001
于 2015-07-28T09:53:33.017 回答
1

这是一个很好的例子,可以帮助你:

http://sandbox.mc.edu/~bennet/cs110/pm/sub.html

如果以编程方式执行此操作,您可以在执行减法之前作弊并查看哪个更大(这就是我所做的)。

于 2012-09-25T00:45:42.343 回答