第二章介紹了計算機處理的對象一數據,第三章則介紹了控製計算機工作的基本信息—程序。那麼計算機為什麼能夠執行程序?怎樣通過電子電路對數據進行處理呢?這往往是初學者急於了解的計算機工作原理。本章將就此討論電子數字計算機工作的邏輯基礎-.基本邏輯電路,如何實現最基本的運算,如何用電路存儲信息,如何控製信息的傳送。這些內容涉及到計算機硬件工作原理的幾個重要基礎。
4.1基本邏輯關係與常用邏輯電路
在概論中我們討論了信息數字化的基本概念,指出在計算機中采用數字型電信號。這種數字信號隻取兩種狀態,如電平低或高,分別對應於數0或1,作為各類信息的表示基礎。這樣的約定使得輸入與輸出之間的關係變得很簡單,相同或者相反。相應的電路稱為數字電路.這種電路可以有多個輸入端,當然每個輸入電信號也隻有高低二種狀態之分,即數0或1,根據輸入信號的綜合狀態(0或1)決定輸出為0或者1。由於輸出與輸入都屬於性質的數字信號,它們之間的關係實質上是一種邏輯關係,所以數字電路又稱為邏輯電路,它是計算機硬件的基礎。
在本節中我們先抽象地歸納出三種最基本的邏輯關係,然後討論如何用邏輯電路來實現邏輯關係,再以數字形式加以描述與概括。
一、最基本的三種邏輯關係
基於數字電路中輸入與輸出的可能狀態,可以將輸出——輸入關係歸納為三種基本的邏輯關係:與、或、非。
1.“與”邏輯
“與”邏輯是這樣一種邏輯關係:當所有輸入都為1時,輸出為1,否則為0。這種輸入輸出關係可簡化為一句口訣:全1則1,-0則0。能實現與邏輯功能的數字電路單元叫“與門”。
在邏輯電路中使用的與門邏輯符號,左邊是我國的標準畫法,右邊是國際上通行的標準畫法。隻畫出二個輸入端的例子,可以推廣到多個輸入的情況。與邏輯體現為:A與B都為1時輸出為1,與邏輯的“與”由此而來。
在實際的與門電路中,輸入信號的電平呈低或高,分別對應數字信號0或1,它可代表某個抽象的邏輯命題。下麵舉二個例子說明與邏輯的體現。
例1:有兩個開關串接在電路中,當開關A與開關B都接通時燈亮,隻要有一個開關斷開燈就不亮。這裏存在一種邏輯關係:當A與B都接通的前提條件得到滿足時,燈亮的結論成立。在采用數字化信息表示方法的計算機中如何描述這一邏輯關係呢?可以將“開關A通”這個邏輯命題,用一個邏輯變量A來表示,並賦予數字0或1。如開關通,則定義變量A=1,稱為命題成立即命題真:如開關A斷,則定義變量A=0,稱為命題不成立即命題假。與此相仿,用變量B表示開關B是否接通,開關B通,則B=1,開關B斷,則B=0。用邏輯變量輸出F表示燈的狀態,燈亮則F=l,燈熄則F=0。這是信息數字化的思想在邏輯問題描述上的體現,顯然燈亮與開關A、B狀態之間的關係就是一種“與”邏輯,當A與B都為1時F為1。
例2:為了保管貴重物品,常設置雙重門鎖,分別由兩位保管人員A與B掌管,必須滿足“A與B都在場”這一前提才能打開全部門鎖。這也是“與邏輯”關係在實際應用中的一個例子。為了描述這個邏輯關係,可設置邏輯變量A與B,分別表示A在場與B在場這兩個邏輯條件,如“A在場”成立則A=1,“B在場”成立則B=l。F=1表示“開鎖”,當A與B都為1時F=l。這個與邏輯就是上述管理規章的抽象化。
常用一種“真值表”的形式去描述輸出與輸入之間的邏輯關係,在真值表的左半部列舉了輸入變量的各種可能組合,例如兩個輸入A與B的組合情況可能有四種:00、01、10、11,通常都按二進製規律依次排列,以免漏掉可能存在的輸入狀態。真值表的右半部列出,對應於每一種輸入狀態的輸出狀態。表4-1表示.隻有A與B都為1時F=1,其餘輸入情況F都為0,這就是與邏輯的真值表。這種真值表是一種很有用的邏輯設計工具,後麵我們將要運用。在表4-1中我們隻考慮二輸入端的情況,可以推廣到多個輸入端,例如三輸入端的輸入情況可能有000、001、010…。
為了對邏輯關係進行處理,例如對邏輯關係進行化簡或轉換,我們希望有一種數學表達式來描述邏輯關係。英國的一位數學家喬治-布爾很早就提出一種思想:用符號來表示邏輯關係。這就是我們在上述二個例子中采用的方法,用逆輯變量表示邏輯命題,變量值為1表示命題真(成立),變量值為0表示命題假(不成立)命題真與假是邏輯問題中一對矛盾的兩個對立麵,我們用數字1與0來表示。如果我們用類似於代數的數學工具去描述邏輯變量之間的邏輯關係,就可以對邏輯關係進行演算處理。這種數學工具稱為“邏輯代數”。
不難看出,上述結論(邏輯關係)與普通“代數乘”(代數關係)在形式上是一致的,因此人們又將“邏輯與”稱為“邏輯乘”,將代數中的乘號“-”引用過來表示邏輯乘。跟代數式的形式一樣,也可將這個“-”。
2.“或”邏輯
“或”邏輯是這樣一種邏輯關係:當輸入中有一個為1時(A為1或B為1),輸出為1;隻有當所有輸入都為0時,輸出才為0。這種輸入輸出關係可簡化為一句口訣:-1則1,全0則0。能實現或還輯功能的數字電路單元叫做“或門”,其邏輯符號如圖4-3所示,左邊是我國通行的標準畫法,右邊是國際上通行的標準畫法。隻畫了二個輸入端,同樣可以推廣為多個輸入。
或邏輯的真值表所示(隻考慮了二輸入端),左半部是各種可能的輸入組合,右半部是對應於各種輸入情況的輸出。真值表描述了或邏輯的輸入輸出關係:隻要輸入中有一個1(A為1或B為1),輸出就為1,僅當輸入都為0時輸出才為0。
注意,上麵等式中的“+”號是邏輯或的運算符,並不是普通代數式中的加號。但是比較一下就會發現又一個有趣的結果,除了輸入A、B都為I的一種情況是1+1=1(邏輯或)外,其餘三種情況與普通代數式中的加運算在形式上也是相同的。因此人們又將“邏輯或”稱為“邏輯加”,其邏輯或算符也就借用“+”號。上麵的例子隻有二個輸入,如果是多個輸入,則邏輯式可寫為:
對與邏輯我們舉了兩個例子,現在再舉兩個相同類型問題的例子,說明在實際生活中存在的或邏輯關係。
例1:有兩個並聯的開關A和B接在電路中,隻要其中有一個開關接通,即開關A通或開關B通,燈都會亮。這就是“或邏輯”關係,當我們用抽象的邏輯式來描述時,可以用邏輯變量A、B分別表示“開關A通”、“開關B通”這兩個邏輯條件。當命題真時相應的變量值為1,在題假時變量為0,F-1則燈亮,B=0燈不亮,於是上述邏輯關係(開關通斷與燈亮的關係)可以用一個邏輯式來描述,寫為F=A+B。
例2:幾位學生同住一室,一把鎖隻有二把鑰匙,不夠分配怎麼辦?常見的做法是用幾把鎖連環式地串掛起來,隻要打開其中一把鎖就能開門。這也是一種或邏輯關係,用邏輯變量分別表示“鎖A開”與“鎖B開”,輸出變量F表示“開門”,於是以開鎖為邏輯條件,以開門為結論的邏輯關係可以描述為:F=A+B。
3.“非”邏輯