从负面消除一个正数 - 两个补语

时间:2016-03-13 06:02:39

标签: binary addition subtraction twos-complement

使用2的补码形式,我需要8位执行以下操作:

  • 从-20减去45。

你可以问这个问题的另一种方式就是说"距离-20或者' -20 - 45'"或者不同的将是" -20 + -45"。

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

  1110 1100
  1101 0011
= 1111 1111

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

1 个答案:

答案 0 :(得分:0)

你的错误在于第二个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