計算機的奧祕原來這麼簡單(二)

數學 與非門 天才汪星喵 2017-07-19

接上文提到的計算機基礎知識,下面就對邏輯運算、邏輯門電路做一些講解,如果有錯誤,還請讀者賜教。

邏輯與開關

19世紀中期有多位數學家在邏輯理論的數學定義上做了一些工作(最著名的是迪摩根),其中布爾做了真正概念上的突破:他發明了一種和傳統代數看起來、用起來都十分相似的代數。

在傳統代數中,操作數(通常是字母)代表數字,而操作符(多是“+”或“×”)指明這些操作數如何結合到一起。一般我們可用傳統代數解決生活中遇到的大多數問題:比如A有3塊錢,B比A多2塊,C的錢是B的3倍,求C多少錢這類問題。

當做傳統代數題時,要遵循一定的規則。這些規則可能已經和實踐融為一體,以至於我們不再認為它們是規則。但規則確實是任何形式的數學的基礎:加法與乘法的交換律、加法和乘法的結合律、乘法對加法的分配律等。

傳統代數的一個特點是它總是處理數字,如重量或數量,火車行駛的距離或家庭成員的年齡。是布爾超凡的智慧使代數脫離了數字的概念而變得更加抽象。在布爾代數中操作數不是指數字,而是指集(類)。一個類僅僅表示一組事物,也就是後來熟知的集合。

比如我們用字母M指代公貓的集合,用F指代母貓的集合。記住,這兩個符號並不代表貓的數量,這兩個字母代表的是貓的種類—具有某種特點的貓。另外,用T代表黃褐色的貓,用B代表黑貓,用W代表白貓,而用O代表所有其他顏色的貓。最後(至少就這個例子而言),貓要麼是閹過的要麼是有生育能力的。我們用字母N代表閹過的貓,而用U代表有生育能力的貓。

在布爾代數中,符號+意味著兩個集合合併,兩個集合的合併就是包含第一個集合的所有成員及第二個集合的所有成員。例如,B+W表示黑貓和白貓的集合。布爾代數中的符號×意味著取兩個集合的交集,兩個集合的交集包含的元素既在第一個集合中,也在第二個集合中。例如,F×T代表了一種貓的集合,這個集合中的貓既是母貓又是黃褐色的。與傳統代數一樣,我們可以把F×T寫成F·T或簡寫為F T。你可以把這兩個字母看成是連在一起的兩個形容詞:黃褐色的母貓。為避免傳統代數和布爾代數之間的混淆,其實這裡應該用符號∪和∩而不用+和×來表示並運算和交運算。

在這我們可以得到交換律、結合律和分配律在布爾代數中也均適用,篇幅有限,具體公式不展開分析。由此我們是為了說明在計算機中,基於硬件基礎上做的最基本的運算不是我們所瞭解的代數運算,而是此處的邏輯運算,為了更形象的說明,舉以下例子。

比如生活中常見的串聯開關電路就屬於與運算電路

計算機的奧祕原來這麼簡單(二)

並聯開關電路屬於或運算電路

計算機的奧祕原來這麼簡單(二)

和由此組成的更復雜的生活中基本不太能見到的運算電路

計算機的奧祕原來這麼簡單(二)

但上面這個稍顯複雜的電路其實是有現實意義的,還是承接上面那個買貓的例子,當你走進寵物店時,告訴店員:“我想要一隻鬮過的公貓,白的或黃褐色的均可;或者要一隻沒生育能力的母貓,除了白色,其他任何顏色均可;或者只要是只黑貓,我也要。”店員如果布爾運算基本功紮實,便能得到如下的表達式:(M×N×(W+T))+(F×N×(1-W))+ B 然後就可以搭建上圖所示的電路了。上面的開關就是有無該品種的貓,然後按圖找貓,直到拿出一隻無生育能力的灰色的母貓:下圖燈泡亮起,滿足條件(結果可能不止一種,這裡只選一種情況)

計算機的奧祕原來這麼簡單(二)

邏輯門電路

如果每個客戶的要求都是這樣繁瑣難記,而且庫存的貓隨著買賣數量也在變化,接待的店員一旦轉頭交給別的同事,那樣這個同事又要從頭看一遍要求了,所以我們有必要在客戶提要求時就把需求模塊化、規範化,這樣無論是誰,只要找到對應客戶的要求系統就可以操作了,比如下圖這樣(需求系統越複雜,越是批量化越值得這麼做)

計算機的奧祕原來這麼簡單(二)

那麼接下來就有問題了,我們知道在計算機專業術語中,開關是一種輸入設備,輸入是控制電路如何工作的信息。本例中輸入開關對應於描述一隻貓咪的4位信息,輸出設備是燈泡。如果開關描述了一隻符合條件的貓,燈泡就會亮。上面介紹的控制面板上的開關被設置成表示一隻無生育能力的黑母貓,這是符合要求的,所以燈泡亮了。現在的問題是規範的設計一個使控制面板工作的電路,因為我們總不能每次都扯著線到處纏吧......

上文我們提到繼電器對電報系統的工作十分重要。連接電報站的電線長距離時電阻很大,需要一種方法來接收微弱的信號並把它增強後發送出去。繼電器通過使用電磁鐵控制開關可做到這一點。事實上,繼電器放大了一個很弱的信號使其成為一個強信號。就像這樣:

計算機的奧祕原來這麼簡單(二)

就我們的目的而言,我們並不對它的信號放大能力感興趣,真正使我們看重的是繼電器作為開關可用電來控制而不用手指,在這就有點自動的意思了。那麼繼電器作為開關有什麼好處嗎?當然了,因為封裝好的繼電器市場上很容易買到(以後介紹的邏輯門或者更復雜的運算模塊市場上都有賣,但為了更好的理解邏輯門,先用繼電器自己搭建)。

我們先看下基礎的邏輯門與繼電器電路的一些聯繫,我們在書上見到的 ”AND gate(與門)”符號如下所示:

計算機的奧祕原來這麼簡單(二)

可以在想象中把它剖開,其實就是下面這個電路圖,倆輸入就是開關,輸出就是燈泡

計算機的奧祕原來這麼簡單(二)

使用“與門”符號,結合在一起就是:


計算機的奧祕原來這麼簡單(二)

同樣的,或門的符號電路對應關係如下

計算機的奧祕原來這麼簡單(二)

或門電路

計算機的奧祕原來這麼簡單(二)

或門符號

反向器的對應關係如下

計算機的奧祕原來這麼簡單(二)

反向器電路

計算機的奧祕原來這麼簡單(二)

反向器符號

由此,我們可以根據以上關係,使用繼電器搭建這些簡單的邏輯門,以便接下來的使用。

其實對於以上幾個符號組合,我們在書本上可能已經瞭解到由4個與門和2個反向器組成的電路叫作“ 2 - 4譯碼器”。輸入是兩個二進制位的不同組合,共代表了4個不同的值。輸出是4個信號,任何時刻只能有一個是1,至於哪一個是1取決於兩個輸入位。用同樣的原理還可以構造“ 3 - 8譯碼器”或“4 - 1 6譯碼器”等等。這個以後細講。現在又回到上面提到的選貓的電路了,很顯而易見,使用繼電器搭建的邏輯門,通過下圖所示的方式連接在一起,對應的硬件電路就設計成功了。

計算機的奧祕原來這麼簡單(二)

補充的,通過了解以上的基本邏輯電路,我們也可以根據“NOR gate(或非門)”,“ NAND gate(與非門)”,緩衝器(輸入=輸出)等常用的基本邏輯門的意義很容易的用繼電器搭建他們的電路,此處不一一列出。

由此我們越來越接近一般書本上開篇的理論知識了,下期我們就要使用這些基本的邏輯電路搭建一些更有意義的東西,比如一個簡單的計算器,做一些加法運算。

相關推薦

推薦中...