2013-03-15 111 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,任何數字加上負數都是零。