我有两个 2 的补码有符号二进制数并想将它们相减(假设是 8 位减法器)
1001 0110
1000 0001
找出差异的操作是什么以及为什么/为什么不存在溢出
我有两个 2 的补码有符号二进制数并想将它们相减(假设是 8 位减法器)
1001 0110
1000 0001
找出差异的操作是什么以及为什么/为什么不存在溢出
要获得两个数字之间的差异,您必须减去它们:
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。