【发布时间】:2014-08-17 17:43:03
【问题描述】:
使用2的补码减法,我的结果是1111(十进制系统中的-1),而在以下情况下它应该是0
10010
-10010
这两个值都以二进制形式提供。
答案似乎很明显,但是按照将负值转换为 2 的补码然后添加它的方法在这种情况下似乎不起作用,因为结果似乎是 1111。
谢谢
【问题讨论】:
标签: binary subtraction
使用2的补码减法,我的结果是1111(十进制系统中的-1),而在以下情况下它应该是0
10010
-10010
这两个值都以二进制形式提供。
答案似乎很明显,但是按照将负值转换为 2 的补码然后添加它的方法在这种情况下似乎不起作用,因为结果似乎是 1111。
谢谢
【问题讨论】:
标签: binary subtraction
使用 2 的补码从自身中减去一个数字意味着您添加它的 2 的补码(减去一个数字就是添加它的 2 的补码):
您需要知道字长(以位为单位)来确定 2 的补码,因此假设一个字的位数为 8。那么您有 00010010 作为原始数字,11101110 作为其 2 的补码。 2 的补码是 1 的补码 (11101101) 加上 1。
然后添加:
00010010 [original number, 18 decimal]
+11101110 [2's complement, -18 decimal]
---------
00000000 [note: there's a 1 overflow bit]
【讨论】:
二进制补码中的 10010(假设 5 位二进制补码)是 -14 (-16 +2)。 14 的二进制补码是 01110 (2+4+8)。所以
10010
-10010
=
10010
+01110
=
00000 (actually 100000, but the 1 is overflowed)
【讨论】: