邏輯閘是什麼?用AND、OR、NOT計算的原理

約 11 分鐘 · 更新:2026年10月23日

邏輯閘是接收0或1的輸入,再依固定規則輸出0或1的小電路。有「兩個都是1才輸出1」的AND、「任一個是1就輸出1」的OR、「變成相反」的NOT等種類。每一種都是把幾個到十幾個電晶體連接起來做成的。把邏輯閘組合起來,就能做加法,也能完成CPU裡複雜的計算。

這篇文章可以了解

  • 邏輯閘是做什麼的電路,以及6種邏輯閘(NOT、AND、OR、NAND、NOR、XOR)的規則
  • 開關的串聯、並聯和AND、OR的關係
  • 用4個電晶體做出NAND閘的原理
  • 只用NAND就能做出任何電路的理由,以及邏輯閘的延遲為什麼會決定時脈的快慢

先備知識:知道「電晶體是用電來切換的開關」和「電腦把電壓的高、低當成1和0」這2件事,會比較容易閱讀。

生活中的例子

微波爐要在門關好,而且按下開始鍵時,才會開始加熱。汽車只要有任何一扇門沒關,就會亮起警示燈。樓梯的電燈,不論用樓上或樓下的開關,都能打開或關掉。

這3個例子,都是「根據幾個條件,決定要不要動作」的規則。第1個是「兩個條件都成立時」,第2個是「只要有任何一個」,第3個是「2個開關的方向相同還是不同」。用0和1來計算這種規則的小電路,就是邏輯閘。

實際的微波爐和汽車,有很多是交給微控制器(小型電腦晶片)做這類判斷。而微控制器的內部,也是由邏輯閘組成的。

邏輯閘是「遵守0和1規則的電路」

在電腦的電路中,電壓高的狀態當作1,低的狀態當作0。邏輯閘從入口(輸入)接收0或1,再從出口(輸出)送出0或1。輸入的數量,有1個的,也有2個以上的。什麼輸入會得到什麼輸出,依邏輯閘的種類而定,不會改變。

邏輯閘的規則,用表格寫出來就很清楚。列出所有輸入組合與當時輸出的表,稱為真值表。輸入有2個時,組合是00、01、10、11共4種,所以表格只要4列。

另外,這裡說的「閘」,是處理0和1的電路的一個單位。電晶體的一個電極(電的出入口)也叫做「閘極」,但意思不同。

基本的3種:NOT、AND、OR

NOT:變成相反

NOT閘(反閘)只有1個輸入,輸入0就輸出1,輸入1就輸出0。因為會把輸入反過來,也稱為反相器。

輸入ANOT的輸出
01
10

AND:兩個都是1時才是1

AND閘(及閘)只有在輸入兩個都是1時,才輸出1。只要有一個是0,就輸出0。這相當於微波爐「門關好」而且「按下按鍵」的判斷。

OR:任一個是1就是1

OR閘(或閘)只要輸入中任一個是1,就輸出1。只有兩個都是0時,才輸出0。這相當於汽車「只要有任何一扇門開著就警示」。

ABANDOR
0000
0101
1001
1111

AND和OR的輸入不一定是2個。如果是3輸入的AND,就只有3個都是1時才輸出1。

加上反相的同伴,以及XOR

把AND的輸出用NOT反過來,稱為NAND閘(反及閘)。名稱是Not AND的縮寫。同樣地,把OR反相的是NOR閘(反或閘)。NAND是「兩個都是1時才是0」,NOR是「兩個都是0時才是1」。

另一種常用的是XOR閘(互斥或閘)。它在2個輸入不同時,也就是只有其中一個是1時,輸出1。樓梯的電燈,用的就是和XOR相同的性質。切換任一個開關,2個開關的方向就會在「相同」和「不同」之間交換,電燈也跟著亮或滅。

ABNANDNORXOR
00110
01101
10101
11000

NAND這一欄,就是把前面AND那一欄的0和1全部對調。NOR這一欄,也是把OR那一欄對調而成的。

用開關的串聯和並聯來想

AND和OR可以用電池、燈泡和開關的電路來想像。把2個開關接成一排,稱為串聯;分成2條路並排,稱為並聯。在下圖中,請把開關接通的狀態當作1,燈泡亮起當作1。

開關串聯的動作和AND相同,並聯的動作和OR相同 串聯:兩個都接通才會亮(AND) 電池 A B 燈泡 並聯:任一個接通就會亮(OR) 電池 A B
上面是串聯,下面是並聯。圖中的開關都是斷開的狀態。串聯時要兩個都接通,並聯時只要接通其中一個,燈泡就會亮。省略的部分:實際電路圖的符號、流過燈泡的電流大小。

串聯時,電必須通過A和B兩個開關,才能到達燈泡。所以只有兩個都接通時,燈泡才會亮。這和AND的真值表相同。並聯時,電走哪一條路都可以,所以只要接通其中一個就會亮。這和OR相同。

開關電路和0與1的邏輯計算是互相對應的。在1930年代把這件事寫成論文的,是後來創立資訊理論的克勞德·夏農。他證明了電話交換機所用的繼電器(用電磁鐵帶動的開關)電路,可以用算式整理並設計出來。

用電晶體做出邏輯閘

晶片裡的邏輯閘,是用稱為MOSFET的電晶體做成的。MOSFET是用加在閘極上的電壓,讓電流的通路接通或切斷的開關。這個原理在「電晶體是什麼?」中說明。

MOSFET有動作完全相反的2種。nMOS在輸入為1時接通,pMOS在輸入為0時接通。把這2種組合起來做邏輯閘的方式稱為CMOS,現在的晶片幾乎都採用這種方式。最簡單的NOT閘,只要pMOS和nMOS各1個,共2個就能做出來。

NAND閘用4個電晶體

2輸入的NAND閘,由2個pMOS和2個nMOS,共4個電晶體組成。在讓輸出變成1的電源+端,把2個pMOS並聯。在讓輸出變成0的0 V端,把2個nMOS串聯。

CMOS的NAND閘:上方的pMOS並聯,下方的nMOS串聯 電源的+端(1) pMOS pMOS 並聯 A B 輸出 nMOS nMOS A B 串聯 兩個都是1時 輸出才會接到 0 V端 0 V(0)
左右和下方的「A」「B」,是切換該電晶體的輸入。A接到左上的pMOS和上方的nMOS,B接到右上的pMOS和下方的nMOS。省略的部分:實際的電路符號、輸入的配線、在晶片中的排列方式。

A和B都是1時,串聯的2個nMOS都會接通。輸出接到0 V端,變成0。這時2個pMOS都是斷開的。

A或B其中一個是0時,串聯的nMOS有1個斷開,通往0 V端的路就沒有了。取而代之的是,輸入0的那個pMOS接通,輸出接到電源的+端,變成1。這樣就做出了「兩個都是1時才是0」的NAND規則。

不論是哪一種輸入,上下兩條路中一定有一條是斷開的。電流不會一直從電源流到0 V端,所以保持輸出時幾乎不耗電。這就是CMOS的優點。

AND比NAND更費工

在CMOS中,輸入變成1時nMOS會接通,把輸出拉向0 V端。因此,只用上下各一組pMOS和nMOS就能做出的,只有輸入變成1時輸出會變成0的邏輯閘。NOT、NAND、NOR都是這種形式。AND通常是在NAND後面接一個NOT,用4個+2個共6個電晶體做成。OR也一樣,是在NOR後面接NOT做成的。

只用NAND,就能做出任何電路

NAND閘有一個有趣的性質。只要把大量的NAND組合起來,從NOT、AND、OR開始,任何規則的電路都做得出來。具有這種性質的邏輯閘,稱為萬用邏輯閘。

只用NAND做出NOT和AND 做出NOT:把2個輸入接在一起 A A的相反 NAND 做出AND:在NAND後面反相 A B AND NAND 當作NOT
半圓形加上小圓圈的符號就是NAND。小圓圈是表示「反相」的記號。上面是在NAND的2個輸入送進同一個訊號,當作NOT的接法。下面是用另一個NAND把NAND的輸出反相,變成AND的接法。省略的部分:OR和XOR的做法、電晶體的數量。

首先是NOT的做法。在NAND的2個輸入都送進同一個訊號A。真值表中「0和0」那一列輸出1,「1和1」那一列輸出0。也就是會輸出和A相反的值,所以能當作NOT使用。

接著是AND。NAND是「把AND反相的東西」,所以把它的輸出再反相一次,就變回AND。反相就用剛才用NAND做的NOT。用2個NAND,就能做出AND。

OR的做法,是先把A和B分別用NOT反相,再送進NAND。A和B都是0時,反相後兩個都是1,NAND輸出0。其他情況下,反相後的輸入至少有一個是0,輸出就是1。這正是「兩個都是0時才是0」的OR規則。像這樣「搭配反相,就能讓AND和OR互換」的規則,稱為笛摩根定理。只要能做出NOT、AND、OR,任何真值表的電路都組得出來。

同樣的事,NOR閘也辦得到。1969年登陸月球的阿波羅太空船,它的導引電腦就利用了這個性質。所用的IC(積體電路)約2,800個,幾乎全是「內含2個3輸入NOR閘的IC」這一種。當時的IC還很新,是使用實績很少的零件。因為需要很高的可靠度,就統一成單純的一種,讓可靠度更容易確認。

不過,現在的晶片並不是只用NAND做的。只用NAND的話,即使是功能相同的電路,零件也會變多,而且容易變慢。實際的設計中,除了NAND、NOR、NOT,也會把常用的組合整合成一個零件,依用途分別使用。

組合邏輯閘來計算

把邏輯閘的輸出接到下一個邏輯閘的輸入,就能做出更複雜的規則。例如,二進位1位數的加法,只要並排1個XOR和1個AND就能完成。XOR算出「這一位的答案」,AND算出「往上一位的進位」。這個電路稱為半加器。

把半加器擴充成可以加任意位數的方法,在「電腦怎麼用0和1計算?」中有詳細說明。另外,在邏輯電路模擬器中,可以排列邏輯閘、切換開關,做出真值表來確認。也能載入「只用NAND做出XOR」的範例。

像加法電路這樣,輸出只由當下的輸入決定的電路,稱為組合電路。另一方面,如果把邏輯閘的輸出接回自己的輸入,也能做出記住先前狀態的電路。這種電路稱為循序電路,在CPU中用來記住計算途中的數字。兩者的差異,可以在「組合邏輯電路與循序邏輯電路的差異」的表格中比較。

邏輯閘有「延遲」

即使切換了邏輯閘的輸入,輸出也不會在那一瞬間改變。因為電晶體切換、把電存進下一個邏輯閘的輸入,都需要一點時間。從輸入改變到輸出改變為止的時間,稱為傳播延遲。

舉例來看當作零件販售的NAND閘IC「74HC00」的說明書(資料手冊)。在電源4.5 V下使用,依規定的測試條件量到的延遲,典型值是9奈秒(奈是10億分之1)。晶片裡的邏輯閘小得多,連接的對象也很近,所以延遲是皮秒(1兆分之1秒)等級。

CPU配合稱為時脈的固定間隔訊號,一步一步推進計算。在1次訊號的間隔中,訊號要依序通過好幾級邏輯閘,並且在下一次訊號之前讓答案穩定下來。因此,經過的邏輯閘最多、延遲最大的路徑,決定了時脈最快能到多少。這條路徑稱為關鍵路徑。

用數字來想一想。3 GHz的時脈,訊號的間隔約333皮秒。為了說明,假設1級的延遲是10皮秒,最多只能串接約33級。實際上,還必須扣掉配線的延遲,以及記住答案的電路所需的時間。配線延遲的原理,在「時間常數RC是什麼?」中說明。

常見的誤解

誤解:邏輯閘裡面有像用手切換那樣的小開關在動

實際上,完全沒有會動的零件。邏輯閘中的電晶體,是依前一個邏輯閘輸出的電壓,以電的方式接通或斷開。人會去切換的,只有像鍵盤這樣的入口部分。在晶片裡,邏輯閘的輸出切換下一個邏輯閘的連鎖反應,以每秒數十億次的速度發生。這是從開關的比喻,或以前用繼電器(用電磁鐵移動金屬接點的開關)做的計算機印象,容易產生的誤解。

誤解:0剛好是0 V,1剛好是1 V(或和電源相同的電壓)

實際上,0和1各自是由電壓的「範圍」決定的。74HC00在電源4.5 V下使用時,輸入在1.35 V以下讀成0,在3.15 V以上讀成1。介於兩者之間的電壓,會讀成哪一個並沒有規定。另一方面,輸出保證0時在0.1 V以下,1時在4.4 V以上(輸出電流小的時候)。例如1的輸出在4.4 V以上,所以就算雜訊讓它下降1.25 V,仍在讀成1的3.15 V以上。0的那一側同樣有1.25 V的餘裕。這個餘裕稱為雜訊邊限,配線上即使有一點雜訊也不會讀錯0和1,就是靠它。晶片內部以更低的電壓運作,但用範圍來讀的想法相同。

誤解:AND和OR是基本零件,NAND和NOR是再加上零件的複雜東西

實際上,在CMOS晶片中正好相反。2輸入的NAND和NOR用4個電晶體就能做出,AND和OR則要再加上反相用的2個,共需6個。在真值表學到的順序(AND在前、NAND在後),和在電路上容易製作的順序並不相同。

從數字來看

項目數量
CMOS的NOT閘電晶體2個
CMOS的2輸入NAND、NOR電晶體4個
CMOS的2輸入AND、OR電晶體6個
IC「74HC00」1個2輸入NAND閘4個
阿波羅導引電腦(1960年代)IC約2,800個(幾乎都內含2個NOR閘)
英特爾4004(1971年)電晶體約2,300個
Apple A17 Pro(2023年)電晶體約190億個

在晶片設計中,有時會用「相當於幾個2輸入NAND閘」來表示電路的大小。把A17 Pro的約190億個單純除以NAND的4個,約相當於48億個(本站的粗略計算)。不過,實際的晶片中,也有很多像記憶用電路這類和邏輯閘形狀不同的部分。這個數字只是用來估計大小的參考。

進一步學習

接著閱讀

系列「電腦的原理」的文章

  1. 電腦怎麼用0和1計算?二進位與加法電路
  2. CPU是什麼?它在電腦和手機裡做些什麼
  3. AI為什麼要用GPU?同時處理大量乘法的原理
  4. 作業系統(OS)是什麼?它在電腦和手機裡做些什麼
  5. CPU快取記憶體是什麼?讓CPU不必苦等記憶體的原理
  6. NPU是什麼?手機和電腦裡的AI專用電路原理
  7. FPGA是什麼?做好之後還能改寫電路的晶片原理
  8. ASIC是什麼?特定應用積體電路與CPU、FPGA的差異
  9. 編譯器是什麼?程式變成機器碼的過程
  10. 邏輯閘是什麼?用AND、OR、NOT計算的原理
  11. RISC-V是什麼?人人都能使用的開放指令集
  12. 演算法是什麼?靠步驟的巧思讓計算變快的原理
  13. 資料庫是什麼?表格、SQL與索引的運作原理
  14. Git是什麼?版本控制的原理與GitHub的差異

這個領域的題目: 邏輯電路

參考資料

入門解說一覽