如何从二进制中减去较小的数字?

时间:2015-02-16 12:39:12

标签: binary

我有两个号码。负面的一个是用2的补码翻译的。

a = 160 = A0 = 1010 0000
b = -28 = E4 = 1110 0100

我必须执行以下操作a - b。我使用借用到最后一点,但后来我遇到了类似的情况。

      0 1
    - 1 1
      ---
      ? 0

我应该借用想象中的东西吗?在十进制1 - 3 = -2中,答案为BC,但您如何推断这里的否定2

1 个答案:

答案 0 :(得分:1)

如果您正在进行2的补码计算,则两个数字都是2的补码,因此A0等于小数-96而不是160

160在8位2的补码中无法表示。我将在这里使用9bit 2的补码。

a - b其中a=160b=-28等于160 + 28。这就是你想要的吗?

  0 1010 0000
+ 0 0001 1100
-------------
  0 1011 1100

或者您想要计算160 - 28?这等于160 + (-28)

  0 1010 0000
+ 1 1110 0100
-------------
 10 1000 0100

我们可以忽略左边1,因为我们正在做9bit 2的补码计算。结果是0 1000 0100 132

这是2的补码的优点,你不必做减法,你可以加上2的补码而不是减去它。

原始二进制文件的8位2补码:

  1010 0000
+ 1110 0100
  ---------
 11000 0100

结果为1000 0100,即-124( - 96 - 28)。