2011-04-13 80 views
1

我在計算機體系結構和我的教授。一直未能給出滿意的答案。當數字太大而無法形成二進制補碼時,無符號二進制減法

假設我們有一個32位處理器,如果我們有兩個無符號整數Xÿ,這兩者都是大於2 (使得它們太大而不能正確地轉換爲二的補充形式)我們如何進行減法?

如果減數是一個常數,我可以看到編譯器如何在靜態分析中補償這一點。但是我們如何在運行時處理這種可能性,特別是在像C這樣的靜態編譯語言中?這是否會引發溢出錯誤或者是否有一些體系結構subu支持特殊操作?

我發現MIPS的一切都表示它只是執行二進制補碼減法,但在這種情況下不應該起作用,應該如何呢?

回答

1

您提出的情況不是問題。具體的例子:

0xFFFFFFFF - 0xFFFF0000 
= 0xFFFFFFFF + -0xFFFF0000 
= 0xFFFFFFFF + 0x00010000 
= 0x0000FFFF 
+0

不知何故,我弄亂了我在紙上的減法,因爲我得到了不同的結果。但這也是我的想法。 +1。 – Joey 2011-04-13 05:11:08