0

我有两个 2 的补码有符号二进制数并想将它们相减(假设是 8 位减法器)

1001 0110

1000 0001

找出差异的操作是什么以及为什么/为什么不存在溢出

4

1 回答 1

0

要获得两个数字之间的差异,您必须减去它们:
1001 0110b = -106
1000 0001b = -127
所以-106 - (-127) = 21

你也可以在二进制中做到这一点:

 1001 0110b
-1000 0001b
     =
 0001 0101b

另一种方法是:a-b = a+(-b),因此您必须对第二个数字进行 2 的补码。就这样1000 0001b变成了0111 1111b

  1001 0110b
 +0111 1111b
      =
1 0001 0101b

第一个1不算数,因为它是一个 8 位数字,所以结果也是0001 0101b十进制的 21。

于 2014-09-03T15:50:48.897 回答