【計組】為什么計算機采用補碼進行運算?


引入:現有一個時鍾,指向9點,那么四個小時后將指向幾點?
顯而易見四小時后時鍾將指向1點。

時鍾構成了一個模12計數器。如果將0點當作一個邊界,那么9點或許可以用另一個說法叫-3點,我們可以通過-3+4=1得到1,也可以通過9+4=13再模12得到1,這就是計算機采用補碼進行運算原理的一個比較好理解的解釋。

下面進行解釋:

如果符號不同的兩個數的絕對值相加等於模,則稱這兩個數互為補數。

1)一個負數可用它的正補數來代替,而這個正補數可以用模加上負數本身來得到。一個正數和一個負數互為補數時,兩數的絕對值之和為模。
2)正數的補數為其自身。

在時鍾的例子里,我們要計算-3+4,就可以轉換為尋找-3的補數9,將9+4,將結果取模的過程。

類比到計算機中,如果兩個正數相加,這再好不過,直接相加即可。如果不幸為一正一負相加或兩個負數相加,如果采用原碼進行計算,就繁瑣的多。所以我們采用補碼進行計算,為簡略表示我們用四位數來表示補碼。

如果計算0110(原)與1011(原)相加
首先我們求出1011的補碼1,101(補)
這里我們不妨看看1011和1,101相加會發生什么(拋掉符號位,即取絕對值0011+1,101=10000,發現向前進了一位,但是計算機中的位數是固定的,這個位數會被舍棄掉(自動取模)。我們回到補數的定義:如果符號不同的兩個數的絕對值相加等於模,則稱這兩個數互為補數。

其實對負數求補碼,就是求負數的補數,用正數的加法替代減法。

這時我們將0110與1011的補碼1101相加,得10011,因為我們只有四位,所以最高位將被舍棄(相當於自動取模,13點取模后為1點),所以結果為0011,即3。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM