嘿伙计们我仍然试图得到二进制补码算法,我可以得到正确的答案,因为我正在研究解决方案的实践问题。
当我采用二进制的答案时,在应用二进制补码并添加数字之前,我似乎无法将其等同于十进制答案。
000100-111001在十进制中,它是4 - 57 = -53
变为
0001000 + 000111,这将是4 +( - 57)?
提供001011的解决方案
如何将001011证明为等于-53?
谢谢!
答案 0 :(得分:1)
要回答您的问题,首先001011不等于-53。这是错误的答案。我们知道它必须是正数,因为最高位是0,而不是1. 001011实际上等于11(基数为10)。
现在让我们以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
这相当于基数10的53。
另一种查看是否正确的方法是使用数字的正版本添加它。
1100 1011
+ 0011 0101
------------
10000 0000
由于二进制补码被定义为从2 ^ n中减去的数字,其中n是位数,因此总是得到总和的结果。敲掉1位数字,有趣的是剩下的只是0 - 任何数字加上它的负数都是零。