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