1. 程式人生 > >計算機實現原理專題--二進位制減法器(三)

計算機實現原理專題--二進位制減法器(三)

在計算機實現原理專題--二進位制減法器(二)中指出當時的減法器需要人工判斷被減數和減數的大小,如果能讓計算機來自動判斷就更好了。實際上計算機採用了補碼來表達有符號數,在之前的java整形數值表示--基礎中就說明了,採用補碼可將減法變成加法。

對於正數而言它的補碼就是原碼如21=0001_0101

-110=1001_0010也就是原碼按位取反再加1,現在21-110就變成了1010_0111=-89

如果是110-21就變成了0110_1110+1110_1011=0101_1001=89

現在就簡單多了,只需知道輸入的數是一個正數還是負數,而運算永遠都是加法運算。

不過對於補碼錶示法,8位數值的有效範圍是-128~127不管是加法運算還是減法運算最終的結果都必須在有效範圍中,否則就會發生溢位從而導致最終結果是不正確的。為了防止溢位,我們可以人為再擴一位出來從而變成一個9位的加法器,它只負責-128~127內所有數值的加減法運