0

嘿伙计们,我仍在尝试掌握二进制补码算术的窍门,我可以得到正确的答案,因为我正在研究解决方案的练习问题。

当我得到二进制的答案时,在应用二进制补码并添加数字之前,我似乎无法将其等同于十进制答案。

000100-111001 十进制是 4 - 57= -53

变成

0001000+000111 是 4 + (-57)?

给出001011的解决方案

如何证明 001011 等于 -53?

谢谢!

4

1 回答 1

1

要回答您的问题,首先 001011 不等于 -53。这是错误的答案。我们知道它必须是正数,因为最高位是 0,而不是 1。001011 实际上等于 11(以十为底)。

现在让我们以 4 - 57 为例。这与 4 + (-57) 相同。转换为二进制(我将在此示例中仅使用一个字节)我们得到:4 是 0000 0100,57 是 0011 1001。要将 57 转换为负 57,请使用二进制补码:
1. 取反:1100 0110
2. 加一:1100 0111
所以现在我们得到以下等式:

  0000 0100
+ 1100 0111
------------
  1100 1011 

我们通过简单地添加行来获得答案。我们得到的答案是 1100 1011。我们知道它是否定的,因为最高位(这里是最左边的)是 1。要找到它的大小,我们应用二进制补码:
1. 否定:0011 0100
2. 加一: 0011 0101
这等于以十为基数的 53。

另一种查看它是否正确的方法是将其与数字的正数相加。

  1100 1011
+ 0011 0101
------------
 10000 0000

由于二进制补码定义为从 2^n 中减去的数字,其中 n 是位数,因此总和会得到这个结果。剔除 1 的数字,有趣的是剩下的只是 0 - 任何数字加上它的负数都是零。

于 2013-03-27T01:28:18.637 回答