2014-09-06 55 views
-5

我已閱讀,減去數在二兩補編碼,我們只是將它們添加together.So爲什麼在彙編語言兩張補數的指令,必須有一個僅適用於無符號數字。減法兩個補碼

像這樣計算表達式5 - 7:??

-7-> unsigned rep-> 0111-> two complement-> 1001 然後計算機做 - > 0101 + 1001 = 1110 = -2 ??

+6

不,我們不只是把它們加在一起。 – 2014-09-06 10:07:56

+0

所以0u -1,-1被轉換爲無符號(0xFF爲8位)並且計算機計算0x00 + 0xFF ??那對嗎? – karim 2014-09-06 10:09:42

+0

如果你添加兩個數字,你會得到* sum *,而不是他們的差異。這就是爲什麼它被稱爲「添加」。 – 2014-09-06 10:10:56

回答

2

以下是補充的工作原理。

考慮數字-1234。

隨着4位數字,我們將它表示爲

10000 
- 1234 

其等於

9999  + 1 
- 1234 
________ 
    8765  + 1 

其中8765是1234 9的補(在十進制系統中),和8765 + 1 = 8766是10的補碼(十進制)。

要計算5555 - 1234,您可以簡單地做10000 + 5555 - 1234 = 5555 + 8766。計算之後,再次減去10000。這就像忽略第五位一樣簡單。

你剛剛計算了1234的減法,而不是添加10的補碼。


二進制2的補碼形式表示減法運算的工作原理是(1)計算2的補碼,和(2)將–其是從剛添加不同。

1

原帖是正確的。在一個典型的二進制補碼計算機上,實際減法操作產生相同的結果,無論數字是帶符號還是無符號,所以實際減法操作可以假定爲無符號數,但它設置兩個不同的條件位,設置或清除「借位」位假設這些數字是無符號的,並且假定這些數字是有符號的,則設置或清除「溢出」位。

一些處理器使用實際減去硬件邏輯,而不是使用否定和添加。