讓小朋友懂一點計算機(一)|二進位與布爾代數

序言

我們可以稍微瞭解一下計算機,當身邊的小朋友發問時,我們可以用我們自己的話來說向他們描述這個簡單而又複雜的世界。

什麼是二進制

讓小朋友懂一點計算機(一)|二進制與布爾代數

二進制

首先在想什麼是二進制之前,想一下十進制,是的,我們一般人有十個手指頭,十個腳趾頭,我們可以從0數到9,記賬用的是十進制,我們知道個十百千萬這些數量級,但是,60秒是一分鐘,60分鐘是一個小時,24小時是一天,一年一般是365天。我們生活的世界很多刻度與進制都是人為規定的。同樣,二進制也是人為規定的。如果用十進制來表達數字,那麼每一個位上只能出現0到9這10個數字,那麼二進制也同樣的,如果用二進制來表達數字,那麼每一個位上只能出現0或者1這兩個數,這和十進制沒什麼不同,這是某個位上能用的數字少一些而已。然而,這種二進制方便了計算機。

早期的計算機也有其他進制,例如5進制,3進制,無論你是什麼進制,畢竟計算機是用電信號來傳遞和操作信號的,進制越多,那麼電信號的區分就越精細,比如0-1伏的電壓表示1 ,1-2伏的電壓電壓表示2,等等,但是這樣有一個問題,電路中出現的電信號雖然多,那麼在比較惡劣的環境下就比較難以區分,比如,你在強電磁干擾的環境中,或者你的電池電量不多的時候,這個時候干擾就會影響到電信號的傳輸,這是為什麼選擇二進制的一個原因,用電路的連通表示1或者說 真 ,用電路的斷開來表示 0 或者說 假 。此外,我們需要了解一下布爾代數。

什麼是布爾代數

19世紀早期,英國數學家喬治·布爾(George Boole,1815-1864)突發奇想:人的思想能不能用數學表達?因此,它用數學式子擴展了亞里士多德基於哲學的邏輯方法。喬治·布爾是布爾代數前兩個字的由來。

兩千年來,哲學書都是用文字寫的。比如,最著名的三段論:

所有人都是要死的,

蘇格拉底是人,

所以,蘇格拉底是要死的。

此前,數學只用於計算,沒有人意識到,數學還能表達人的邏輯思維:

S X (R X D)

= (S X R) X D

= S X D

= S

這個式子的意思是,蘇格拉底與會死的東西的交集,就是蘇格拉底,即蘇格拉底也屬於會死的東西。布爾代數是一門可以把人對事物的邏輯思維判斷轉化為數學式子來進行運算的一門學科。因此,它的基本運算就是對

的運算。在布爾代數裡,變量的值是真和假,能對變量進行邏輯操作。

布爾代數的基本邏輯操作

NOT 操作

這個操作是取反。真值表如下:

如果變量的值為真,NOT後為假

如果變量的值為假,NOT後為真

讓小朋友懂一點計算機(一)|二進制與布爾代數

在上圖中黃色線條的部分,是三極管的簡化圖,它有三個電極,上面和下面的電極,中間一條黃色橫線代表是控制電極,在這裡,要注意一下,輸入端的確在控制電極這裡,但是輸出端,它在上方那根線那裡,好,現在我們來看看情況:

當輸入端(控制電極)有電流時,三極管會允許電流通過,這是輸出端的電流會一股腦地流向接地這一端,(科學的解釋需要用到物理學電學這塊的知識),你可以把它想象為有一個巨大的水管把你們家的水放走了,所以你家的小水龍頭裡一點水都放不出來。

這時,輸入為真,輸出為假。

讓小朋友懂一點計算機(一)|二進制與布爾代數

非門輸出真的情況

當輸入端(控制電極)沒有電流時,三極管不會允許電流通過,這是輸出端的電流就在三極管這裡停住,然後流向輸出端,你可以把它想象為那個巨大的水管被關閉了,所以你家的小水龍頭裡可以放出水來。

這時,輸入為假,輸出為假。

AND 操作

AND操作,這個操作很像中文當中的並且,例如:只有電飯煲裡有米並且插上了電源才可以煮飯。要想電飯煲能煮上飯,需要滿足兩個條件,一是插上了電源,二是電飯煲裡要有米飯,這有這兩個條件都為真的時候,我們才能說電飯煲能煮上飯,只要有一個條件不成立,那整個命題就是假的。

讓小朋友懂一點計算機(一)|二進制與布爾代數

與門輸出假的情況

為了實現這種邏輯結構,我們可以串聯兩個三極管,如上圖,只要其中一個三極管的控制電極沒有電流,那麼,整個電流都不會實現連通。

讓小朋友懂一點計算機(一)|二進制與布爾代數

與門輸出真的情況

如果兩個三極管的控制電極都有電流,那麼結果才為真。

真值表如下:

如果變量A的值為真,變量B取真,AND為真

如果變量A的值為真,變量B取假,AND為假

如果變量A的值為假,變量B取真,AND為假

如果變量A的值為假,變量B取假,AND為假

OR操作

OR操作,這個操作很像中文當中的或者,例如:你爸爸給了你100塊錢 或者 你媽媽給了你100塊錢,那麼你就有錢買零食吃。如果你想你有錢買零食吃這個為真,那麼只需要你爸給了你錢 或者 你媽給了你錢其中一種情況發生了就好了,當然兩個人都給你錢就更好了(嘻嘻嘻)。這種邏輯結構,我們可以並聯兩個三極管,並聯就有點像雙車道,可以同時跑兩輛車,兩個車道不相互影響,一個車道路況的好壞,擁堵情況,都不會影響兩外一個車道。

OR結構如下圖

讓小朋友懂一點計算機(一)|二進制與布爾代數

或門輸出為假的情況

如果兩個三極管的控制電路都沒有電流通過,那麼,輸出端也沒有電流,那麼這種情況就是假

讓小朋友懂一點計算機(一)|二進制與布爾代數

或門輸出為真的情況

如果兩個三極管的控制電路中有一個電流可以通過,那麼,輸出端有電流,那麼這種情況就是真

讓小朋友懂一點計算機(一)|二進制與布爾代數

或門輸出為真的情況

如果兩個三極管的控制電路中電流都可以通過,那麼,輸出端也有電流,那麼這種情況也是真。

真值表如下:

如果變量A的值為真,變量B取真,OR為真

如果變量A的值為真,變量B取假,OR為真

如果變量A的值為假,變量B取真,OR為真

如果變量A的值為假,變量B取假,OR為假

我們把上述的三個操作都抽象出來,把它們稱為邏輯門,並且將他們固定下來作為一種基本電子元器件而存在,那麼以後在電路中就可以用下面的符號來表示,

讓小朋友懂一點計算機(一)|二進制與布爾代數

邏輯門的符號表達

XOR操作

還有一種也很有用的邏輯操作叫做異或,但是它是由前面三個基本邏輯操作結合在一起的,在中文裡面你可以把它理解為 要麼...要麼... 這種意思,例如今天晚上你媽媽問你晚上煮什麼湯,你可以選擇紫菜蛋花湯或者西紅柿雞蛋湯,但是你只能選擇一種,如果你兩種湯都選,你媽媽就會不高興,然後不煮湯(我感覺這個例子很真實,因為我媽就是這樣的),所以你要想今天晚上有湯喝,那你要麼選擇紫菜蛋花湯,要麼選擇西紅柿雞蛋湯,你不能兩樣都選,當然,你可以兩樣都不選(emmmmmm....)。

讓小朋友懂一點計算機(一)|二進制與布爾代數

與或門的原理圖

上圖左邊的彎曲的線表示兩條線不想交,右邊NOT們的黃色小圓表示取反操作

真值表如下:

如果變量A的值為真,變量B取真,XOR為假

如果變量A的值為真,變量B取假,XOR為真

如果變量A的值為假,變量B取真,XOR為真

如果變量A的值為假,變量B取假,XOR為假

資料來源

特此鳴謝 The Crash Course

下集預告

二進制是如何表示數字,文字,圖片,聲音,還有視頻的。



分享到:


相關文章: