使用2的补码形式,我需要8位执行以下操作:
你可以问这个问题的另一种方式就是说"距离-20或者' -20 - 45'"或者不同的将是" -20 + -45"。
我的想法是我应该得到-20(11101100)的二进制补码,然后将其添加到-45(11010011)的二进制补码中,反之亦然。那会给我:
1110 1100
1101 0011
= 1111 1111
这显然不正确。我做错了什么?
答案 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