使用全加器實現補碼的加減運算

引言:

我們都知道,在計算機中的加減運算都是由補碼來實現的,那麼,計算機是如何運用電路來實現補碼的加減的呢?在計算機中,所有的加減運算其實都變成了加法後來參與運算的,那麼僅需要一個加法器就可以實現了。請看下面內容。

(一)全加器的構成

1.什麼是全加器

全加器英語名稱爲full-adder,是用門電路實現兩個二進制數相加並求出和的組合線路,稱爲一位全加器。一位全加器可以處理低位進位,並輸出本位加法進位。多個一位全加器進行級聯可以得到多位全加器。

(1)一位全加器邏輯電路圖如下

全加器邏輯電路圖

該一位全加器的求和部分Si由兩個異或門組成,進位部分Ci+1由與非門組成。

(2)簡單的直觀表示

全加器由兩個二進制數字Ai,Bi和一個進位輸入Ci相加,產生一個和輸出Si,以及一個進位輸出Ci+1。

下表中列出一位全加器進行加法運算的輸入輸出真值表。

全加器真值表

(3)邏輯表達式

根據所示的真值表,三個輸入端和兩個輸入端可按如下邏輯方程進行聯繫:

Si=Ai⊕Bi⊕Ci
Ci+1=AiBi+BiCi+CiAi

看到這裏你想起了什麼?是不是補碼運算的相加、進位、判斷溢出?


(二)補碼運算的二進制加法/減法器的邏輯結構

1.補碼加減運算法則

(1)對於定點數的加法

定點小數:[X]補+[Y]補=[X+Y]補     (mod 2)
定點整數:[X]補+[Y]補=[X+Y]補 	(mod 2^n+1)

(2)對於定點數的減法

定點小數: [X-Y]補=[X]補+[-Y]補	(mod 2)
定點整數: [X-Y]補=[X]補+[-Y]補	(mod 2^n+1)

可以看出,在補碼運算中,減法都變成了了加上該補碼負數的形式。

(3)補碼取負數:

即[X]補包括符號位在內的各位取反,末位加一後變成[-X]補

那麼如何使用電路實現?如下

2.多位全加器實現補碼加減運算

在這裏插入圖片描述

(1)圖中字母代表含義

字母 含義
M 方向控制 (即控制做加\減法運算)
An 輸入的 [X]補
Bn 輸入的 [Y]補
Cn 進位輸入\輸出
Sn 結果輸出

(2)實現加減

1.加法運算

當時加法運算時,我們的控制輸入M就會起到相應的作用,當M=0時,他與Bn相連,做異或處理,此時可見結果就等於Bn本身,此時Bn輸入到一位的全加器中,與An輸入相加,在n=0處還加上了M的0,對結果無影響。

2.減法運算

而當M=1時,進行減法運算,此時的Bn與M=1進行異或,得到的就是Bn的反碼,而最低位的M=1做一個加數進入到運算中就是:An+(Bn+1),此時的1在最低位。那麼就可以看到,其實這時的M作用一就是將[Y]補轉換成[-Y]補,使整個電路做補碼的減法運算。


(三)判斷溢出

而在這裏,就是採用的單符號位法來判斷是否溢出

(1)單符號位判斷法

1.當最高數值位產生進位而符號位不產生進位時,產生上溢;
2. 當最高數值位不產生進位而符號位產生進位時,產生下溢。

簡單來講也就是:

總:只要最高數值位與符號位 “都產生進位或都不產生進位(同號)” 時不溢出,否則溢出。

那麼我們從電路圖中就可以看出:

1.若Cn與Cn-1同號,則經過異或門結果爲0,不溢出;
1.若Cn與Cn-1異號,則經過異或門結果爲1,溢出;

Cn我們在前面說過,就是輸出的進位。

(2)實例圖

實例圖
如圖所示,這次做的爲:(+8) + (+12) = 20 即 001000 + 001100 = 010100 沒有溢出

—The End—

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章