1. 程式人生 > 其它 >第3集 布林邏輯和邏輯閘

第3集 布林邏輯和邏輯閘

1. 計算機最早是機電裝置,一般使用十進位制計數

例如:用齒輪來代表十進位制。

2. 再到電晶體計算機,只用「開 / 關」兩種狀態也可以代表資訊,我們稱之為「二進位制」,意思是「用兩種狀態表示」

例如:自行車有兩個輪子,雙足動物有兩條腿,
* 不同的是,電晶體可以不只是「開/關」,還可以讓不同大小的電流通過。

3. 為什麼一定要用二進位制?除了二進位制,還可以有更多種的狀態嗎?

* 也許你可能覺得兩種狀態不多,確實是這樣。但如果只需要表示 true 和 false,兩個值就夠了。

* 二進位制也可以寫成 0 和 1 ,而不是 true 或 false,這些只是不同的表達方式。

* 一些早期電子計算機是三進位制的,有 3 種狀態,還有五進位制,5 種狀態。

* 問題是:狀態越多,越難區分訊號。
    舉例:如果手機快沒電了,或者附近有電噪音,因為有人在用微波爐,訊號可能會混在一起,而每秒變化百萬次的電晶體會讓這個問題變得更糟
    所以,儘可能將兩種訊號分開,只用「開」和「關」兩種狀態,來儘可能減少這類問題

4. 計算機使用二進位制的另一個原因:

* 有一整個數學分支叫「布林代數」存在,專門處理「真」和「假」,解決了所有法則和運算,在布林代數中,變數的值是 true 和 false, 能進行邏輯操作。

* 「喬治·布林」是「布林」二字的由來,是一位 19 世紀,自學成才的英國數學家。他有興趣用數學公式來擴充套件亞里士多德基於哲學的邏輯方法,用「邏輯方程」系統而正式的證明真理。
    1847年,第一本書「邏輯的數學分析」中介紹過,在「常規」代數裡(在高中學的那種),變數的值是數字,可以進行加法或乘法之類的操作。
    但在布林代數中,變數的值是 true 和 false,能進行邏輯操作。

* 布林代數有3個基本操作:
    1)NOT:反轉布林值,也叫做“NOT門” 。叫“門”,是因為它可以控制電流的路徑,可以把控制線,當作輸入;底部的電極,當作輸出。
    2)AND :門,串聯,必須有兩條通路。
    3)OR:門,並聯,有一條電路通即可。
        * 現在我們可以進行一次抽象:電晶體和電線依然在那裡,我們只是用符號來代表而已。
    4)異或,簡稱 XOR。
        * XOR 就像普通的 OR, 但是有一個區別:如果兩個輸入都是 true, XOR 輸出 false; 如果想要 XOR 輸出 true, 一個輸入必須是 true, 另一個輸入必須是 false。
        * XOR 非常有用,工程師給了它一個符號,一個 OR 門 + 一個笑臉。
        * 現在可以把 XOR 放入「工具箱」了,不用擔心 XOR 具體用了幾個門,這幾個門又是怎麼用電晶體拼的,或電子是怎麼流過半導體的。
        * 再次向上抽象:
            1 工程師在設計處理器時,很少在電晶體的層面上思考,而是用更大的元件,比如邏輯閘,或者由邏輯閘組成的更大元件;
            2 就算是專業程式設計師,也不用考慮邏輯是怎樣在物理層面實現的。

5. 總結

從電訊號開始,到現在第一次表示資料,開始有點「計算」的感覺了。僅用這集講的「邏輯閘」,我們可以判斷複雜的語句。
    * 舉例:[如果是 John Green] AND [下午 5 點後] OR [週末] AND [在比薩店附近],那麼[John 想要比薩] = 真