【问题标题】:Taking away a positive number from a negative - Two's Complement从负数中去掉正数 - 二进制补码
【发布时间】:2016-03-13 06:02:39
【问题描述】:

使用二进制补码形式,我需要用 8 位执行以下操作:

  • 从 -20 中减去 45。

您可以这样问的另一种方式是说“从 -20 或 '-20 - 45' 中取出 45”,或者再次使用“-20 + -45”。

我的想法是我应该得到 -20 (11101100) 的二进制补码,然后将其添加到 -45 (11010011) 的二进制补码中,反之亦然。那会给我:

  1110 1100
  1101 0011
= 1111 1111

这显然是不正确的。我做错了什么?

【问题讨论】:

    标签: binary addition subtraction twos-complement


    【解决方案1】:

    您的错误在于第二个 MSB - 您将 1+1 添加为 1,实际上 + 基本上是 XOR 操作,因此 1+1 应该是 0,然后您携带 1。

    -20 + -45 是正确的计算方法,应该是:

      1
      1110 1100
      1101 0011 
      ---------
    = 1011 1111
    

    基本上,对于 MSB,你得到的1+1+1 相当于0+1(或1+0),当然是1

    因此你得到了10111111,即十进制的-65

    -2^7 + 2^5 +2 ^4 + 2^3 + 2^2 + 2^1 + 2^0
    = -128 + 32 + 16 + 8 + 4 + 2 + 1
    = -65
    

    【讨论】:

    • 你已经死了,现在我觉得自己很愚蠢!我想象的一个功能固定的例子。谢谢!
    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2019-02-20
    • 2023-03-25
    • 1970-01-01
    • 2017-03-16
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多