如何用基本的邏輯門設計32bit的超前進製加法器?

時間 2021-06-03 09:47:27

1樓:陳程

我先從最基礎的講起

與門與門

或門

A+B:輸入皆為0,輸出為0,否則為1

或門非門

A':輸出與輸入相反

非門OK,現在最基礎的三種邏輯門你已經完全掌握了,所有的電路都是這三種邏輯門的組合。

現在我們開始高階課程

與非門

(A*B)':輸入皆為1時,輸出為0,否則為1

與非門本質上就是把與門非門兩個串聯起來

或非門

(A+B)':輸入皆為0時,輸出為1,否則為0

或非門把或門非門兩個串聯起來

異或門

A'*B+A*B':輸入相同時,輸出為0,否則為1

異或門構造異或門的方法不唯一,在這裡只展現一種

解釋一下原理

與門中,輸入只要有0,輸出便是0

如果A、B都是0,或門輸出為0

如果A、B都是1,與非門輸出為0

所以當A=B時,最後輸出為0

如果A、B乙個是0,乙個是1,,那麼與非門的輸出為1

同時或門的輸出也是1

現在與門的兩個輸入都是1,最後的輸出自然就是1

同或門

A*B+A'*B':輸入相同時,輸出為1,否則為0

同或門同樣,構造方法也有很多,不過現在理解起來最簡單的當然是把異或門和非門串聯起來

---分割線---

好了,我們終於可以開始接觸加法器了

首先,我們先認識一下加法器的簡(殘)化(缺)版——半加法器

半加:不考慮進製的加法

舉個例子:在十進位制中 7半加5=2 99半加87=76

把目光放回到二進位制裡來

乙個半加法器中

輸入:加數,被加數;輸出:和

乙個數字上的加法只有四種可能

1+1=0;1+0=1;0+1=1;0+0=0(再強調一下,半加法不用考慮進製)

異或門可以完美適應這個工作

舉例操作:被加數(1001),加數(0111)

把被加數的個位(1)、加數的個位(1)輸入異或門,輸出(0)

再把十位、百位...重複上列操作

最後得到1110

乙個半加法器就這麼簡單

但是,這終究還是缺陷巨大,我們要一點點的改進它

首先,我們讓他可以輸出進製(只是輸出,不是處理)

這個改進非常簡單,因為在不考慮前一位的進製的條件下產生進製的唯一條件就是在這個位數上的加數和被加數都是1

聽蒙了沒,給你舉個例子

11001半加01101

個位上1半加1=0沒問題,但還有乙個進製(畢竟原本1+1=10,這十位的1就是個位的進製)

而上面「11001半加01101」中,個位、千位都有進製

擁有進製的條件就是:在這個位數上加數和被加數都是1

也就是:輸入都是1,輸出為1,否則為0。

這句話是不是有點熟悉,往前翻一下,不就是與門的基本功能嗎

OK,那這改進就很簡單了,將輸入分出來在和與門相連即可

上圖先到這,我去上課了

計算機裡的 32 bit 和 64 bit 是什麼技術?各有哪些優點和不足?

羅駿飛 32位還是64位都是計算機的字,就是計算機處裡乙個資料的表示長度,比如同表示3,32位計算機表示出來就是 0000 0000 0000 0000 0000 0000 0000 0011 即00 00 00 03H如果是64位計算機,就是 0000 0000 0000 0000 0000 00...

如何用設計改變人們的行為方式?

William 1。要讓改變發生在不知覺中,就要讓設計不那麼突然2。要有基於心理學的引導作用 3。要做樣本測試 4。要有參與感,也包括獲得感 3T 1 目標清晰和明確的觸發動機 triggered 2 行動有形化 tangiable 3 過程可量化 trackable 5。及時激勵和縮小激勵間隔 這...

LLVM 的基本型別是如何設計的

陸明非 一開始是有sign unsigned的,後來去了,資訊放在opcode上,opcode有signed和unsigned,這樣基本上和硬體一致了. saturnman 我前一段時間略翻了一遍llvm的ref,型別這一塊屬於抽象和具體硬體平衡的一種結果。基本上參考了過去幾十年主流處理器架構支援的...