我正在解决一个二进制减法问题而且陷入了困境。我无法理解如何从较小的数字中减去更大的数字。
我的操作数是0.111000 * 2 ^ -3和1.0000 * 2 ^ -3。
我很容易减去小数部分,但是当来到MSB时,我不知道该怎么做。我应该从哪里借用来执行操作。我知道从0减去1需要借用它并将符号位变为负数。但在这里,存储不受关注。我的问题在于操作本身。谁能解释wats的结果以及如何执行它?
谢谢
答案 0 :(得分:2)
很晚,但有同样的问题,所以把这个放在别人身上,遇到同样的问题。
如果您的问题仅存在于小数部分,您可以尝试以下方法:
1.000
- 0.111
-------
步骤1:添加两个二进制数的符号位,以便添加。
0 1.000
1 0.111
------- +
1 1.111
现在反转并添加一个以将2&#39的补码转换为符号幅度:
1 1.111 -> 0.001
答案 1 :(得分:1)
以下是一个可以帮助您的好例子:
http://sandbox.mc.edu/~bennet/cs110/pm/sub.html
如果以编程方式执行此操作,您可以在执行减法之前作弊并查看哪个更大(这就是我所做的)。