1930年晚期,一位麻省理工學院的研究生Claude Shannon觀察到一般開關的電路設計與邏輯運算之間的共通性。
他利用這個想法成功地解決了電路設計的問題。
電腦的電路只包含了三件事:
![]() |
不(NOT) |
![]() |
且(AND) |
![]() |
或 (OR) |
我們稱它們為“閘”(Gate)。
![]() |
不 |
我們考慮下面這個連一個三歲小孩也了解的敘述:
「如果你哭鬧,我就不給你糖果;
如果你不哭鬧,我就給你糖果。」這是一個與“不”有關的敘述,電腦會把它翻譯成:
輸入(哭鬧)
輸出(給糖果)
如果輸入值是“真”的話
(表示有哭鬧)就“不”給糖果
如果輸入值“不”是“真”的話
(表示沒有哭鬧)就給糖果
我們以1表示命題為“真”,以0表示命題為“偽”:
輸入(哭鬧)
輸出(給糖果)
1 → 0
0 → 1
![]() |
且 |
「如果你把雞肉吃完,而且把菠菜吃光,我就給你糖果吃;
否則,我就不給你糖果吃。」這個敘述中含有兩個輸入值——雞肉與菠菜。只有「雞肉」項與「菠菜」項的輸入值都是真的時候(也就是把雞肉和菠菜都吃光的時候),才可以得到糖果。
輸入(雞肉)
輸入(菠菜)
輸出(糖果)
1
1
0
01
0
1
01
0
0
0
![]() |
或 |
「如果你穿了雨衣或是撐了雨傘,就不會淋溼;否則,你就會淋溼。」
它一樣有兩個輸入值——雨衣和雨傘,不同的是只要其中一項的輸入值是真的,你就不會被雨淋溼。
輸入(雨衣) |
輸入(雨傘) |
輸出(不會淋溼) |
1 |
1 |
1 |
這些就是電腦為你做的事,在它眼裡,這個世界的所有事,小至計算的值,大至讓太空梭在火星上登陸,都能藉由許許多多的“不”“且”“或”而完成。
人腦的思考模式就不是這麼單純了,我們不會永遠把事情單單分成“是”與“不是”,有時候,我們還會說“或許”(Maybe) 。
就算我們不用“或許”這個字眼,我們還是常常說出一些語意不清的句子。「今天天氣很好。」這句話看起來是很明確,但是,怎樣才叫做天氣好呢?晴天?陰天?還是晴時多雲?它並沒有標準答案。我們只是憑著自己的感覺,很自然的說出這樣的話。電腦可沒辦法做這種事,所以當你要寫一個程式時,就要先替它把所有事情分成“真”(1),與“偽”(0)才行。