【发布时间】:2014-09-03 04:31:53
【问题描述】:
我有两个 2 的补码有符号二进制数,想将它们相减(假设是 8 位减法器)
1001 0110
1000 0001
找出差异的操作是什么以及为什么/为什么不存在溢出
【问题讨论】:
标签: binary twos-complement number-systems
我有两个 2 的补码有符号二进制数,想将它们相减(假设是 8 位减法器)
1001 0110
1000 0001
找出差异的操作是什么以及为什么/为什么不存在溢出
【问题讨论】:
标签: binary twos-complement number-systems
要得到两个数字之间的差,你必须减去它们:1001 0110b = -1061000 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。
【讨论】: