【问题标题】:subtracting a negative 2's complement减去负 2 的补码
【发布时间】:2014-09-03 04:31:53
【问题描述】:

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

1001 0110

1000 0001

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

【问题讨论】:

    标签: binary twos-complement number-systems


    【解决方案1】:

    要得到两个数字之间的差,你必须减去它们:
    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。

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 1970-01-01
      • 2017-02-13
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多