使用2的补码自行减去一个值

时间:2014-08-17 17:43:04

标签: binary subtraction

使用2的补码减法方法,我的结果是1111(十进制中为-1),而在下列情况下它应为0

  10010
 -10010

其中两个值都以二进制形式提供。

答案似乎很明显,但是按照将负值转换为2的补码然后添加它的方法在这种情况下似乎不起作用,因为结果似乎是1111。

由于

2 个答案:

答案 0 :(得分:0)

10010的二进制补码(假设5位二进制补码)是-14(-16 +2)。两个补码中的14是01110(2 + 4 + 8)。所以

 10010
-10010
=
 10010
+01110
=
 00000 (actually 100000, but the 1 is overflowed)

答案 1 :(得分:0)

使用2的补码从自身中减去一个数字意味着你添加它的2的补码(减去一个数字就是加上2的补码):

你需要知道字的大小以确定2的完成,所以让我们假设一个字的位数是8.然后你有00010010作为原始数字和11101110作为其补充。 2的补码是添加11101101的1补码(1)。

然后添加:

 00010010   [original number, 18 decimal]
+11101110   [2's complement, -18 decimal]
---------
 00000000   [note: there's a 1 overflow bit]