使用2的补码减法方法,我的结果是1111(十进制中为-1),而在下列情况下它应为0
10010
-10010
其中两个值都以二进制形式提供。
答案似乎很明显,但是按照将负值转换为2的补码然后添加它的方法在这种情况下似乎不起作用,因为结果似乎是1111。
由于
答案 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]