我已閱讀,減去數在二兩補編碼,我們只是將它們添加together.So爲什麼在彙編語言兩張補數的子指令,必須有一個僅適用於無符號數字。減法兩個補碼
像這樣計算表達式5 - 7
:??
-7-> unsigned rep-> 0111-> two complement-> 1001 然後計算機做 - > 0101 + 1001 = 1110 = -2 ??
我已閱讀,減去數在二兩補編碼,我們只是將它們添加together.So爲什麼在彙編語言兩張補數的子指令,必須有一個僅適用於無符號數字。減法兩個補碼
像這樣計算表達式5 - 7
:??
-7-> unsigned rep-> 0111-> two complement-> 1001 然後計算機做 - > 0101 + 1001 = 1110 = -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)將–其是從剛添加不同。
原帖是正確的。在一個典型的二進制補碼計算機上,實際減法操作產生相同的結果,無論數字是帶符號還是無符號,所以實際減法操作可以假定爲無符號數,但它設置兩個不同的條件位,設置或清除「借位」位假設這些數字是無符號的,並且假定這些數字是有符號的,則設置或清除「溢出」位。
一些處理器使用實際減去硬件邏輯,而不是使用否定和添加。
不,我們不只是把它們加在一起。 – 2014-09-06 10:07:56
所以0u -1,-1被轉換爲無符號(0xFF爲8位)並且計算機計算0x00 + 0xFF ??那對嗎? – karim 2014-09-06 10:09:42
如果你添加兩個數字,你會得到* sum *,而不是他們的差異。這就是爲什麼它被稱爲「添加」。 – 2014-09-06 10:10:56