分数二进制减法

时间:2012-04-09 20:38:23

标签: math binary floating-point floating-point-precision binary-operators

我很难理解为什么下面的二元减法给出了它的结果。我一直得到一个不同的答案。我试图计算0.1-x,使x为0.00011001100110011001100。答案应该是0.000000000000000000000001100 [1100] ......(1100不断重复)当我这样做的时候,我一开始就是1100.

我做得不好?

1 个答案:

答案 0 :(得分:0)

我认为您的预期答案是错误的。这是我的解决方案。我将这些位分组为nybbles,使其看起来可读。

  0.1000 0000 0000 0000 0000 0000 <- added zero to the rightmost to fill in the nybble
- 0.0001 1001 1001 1001 1001 1000 <- added zero to the rightmost to fill in the nybble
_________________________________

获取0.0001 1001 1001 1001 1001 1000的2的补码。

  1.1110 0110 0110 0110 0110 0111 (1's complement)
+ 0.0000 0000 0000 0000 0000 0001
_________________________________
  1.1110 0110 0110 0110 0110 1000 (2's complement)

将2的补码添加到0.1

  0.1000 0000 0000 0000 0000 0000
+ 1.1110 0110 0110 0110 0110 1000
_________________________________
 10.0110 0110 0110 0110 0110 1000

由于溢出是1,请忽略它。它只是表示最终答案是正数,因为0.1大于0.0001 1001 1001 1001 1001 1000。因此,最终答案是0.011001100110011001101000