0

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

我没有正确地做什么?

+0

你有什么试过的?你的答案到底是什么?你为什么认为答案应该不断重复? – 2012-04-09 20:56:22

+0

你怎么知道这是“应该”的答案?这不是接近我得到的答案。 – 2012-04-10 01:59:28

+0

将你的'答案应该'和你给定的'x'加在一起。你有'0.1'吗?这对你提出的'答案'有什么影响? – AakashM 2012-04-10 08:12:48

回答

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 
_________________________________ 

得到2的补码0.0001 1001 1001 1001 1001 1000

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