2013-03-15 48 views
0

嘿家伙我仍然试图得到两个补码算术的悬挂,我可以得到正确的答案,因为我正在解决实践问题。如何检查二进制补码减法方程的负解?

当我采用二进制的答案时,似乎无法在应用二进制补码和添加数字之前将它等同于小数的答案。

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

变得

0001000 + 000111这将是4 +(-57)?

捐赠的001011

如何解决能001011被证明为等于-53?

谢谢!

回答

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,任何数字加上负数都是零。