二进制浮点减法

时间:2012-09-25 00:35:28

标签: binary-data subtraction

我正在解决一个二进制减法问题而且陷入了困境。我无法理解如何从较小的数字中减去更大的数字。

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

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

谢谢

2 个答案:

答案 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

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