在計算機實現原理專題--二進制減法器(二)中指出當時的減法器須要人工判斷被減數和減數的大小,若是能讓計算機來自動判斷就更好了。實際上計算機採用了補碼來表達有符號數,在以前的java整形數值表示--基礎中就說明了,採用補碼可將減法變成加法。java
對於正數而言它的補碼就是原碼如21=0001_0101.net
-110=1001_0010也就是原碼按位取反再加1,如今21-110就變成了1010_0111=-89blog
若是是110-21就變成了0110_1110+1110_1011=0101_1001=89get
如今就簡單多了,只需知道輸入的數是一個正數仍是負數,而運算永遠都是加法運算。基礎
不過對於補碼錶示法,8位數值的有效範圍是-128~127無論是加法運算仍是減法運算最終的結果都必須在有效範圍中,不然就會發生溢出從而致使最終結果是不正確的。爲了防止溢出,咱們能夠人爲再擴一位出來從而變成一個9位的加法器,它只負責-128~127內全部數值的加減法運算。原理