邏輯閘(logic gate)
邏輯閘是一個小電路,依照一條固定規則,把一兩個是/否訊號變成一個是/否訊號。可以把它想成一個事先接好的小決策者:「只有當我的兩個輸入都是 1 時才輸出 1」(這是 AND),或「任一輸入是 1 就輸出 1」(OR),或「把給我的訊號反過來」(NOT)。這裡 1 代表高電壓、0 代表低電壓,所以閘其實就是把電晶體排列好,讓輸出電壓遵循那條規則。閘是硬體的字母——少數幾種閘,重複並連接起來,就能拼出計算機所能計算的一切。
基本的閘有 NOT(反相:0 變 1)、AND(所有輸入都是 1 時才為 1)、OR(任一輸入為 1 就為 1),以及它們的反相版本 NAND(非 AND)、NOR(非 OR)和 XOR(互斥或:兩輸入不同時為 1)。每一種都由幾顆電晶體構成。例如 2 輸入的 NAND,是兩顆 n 型電晶體串聯,只有當兩個輸入都為高時才把輸出拉低,外加兩顆 p 型電晶體並聯,其餘情況把輸出拉高——所以輸出恰好在「兩輸入皆為高」時才是低,這就是「非 AND」。任何閘的完整行為都可用它的真值表記下,那張小表列出每一種輸入組合對應的輸出。
它為何重要:閘是讓雜亂的類比電晶體變成乾淨、可重複使用的數位基本元件的那一層。一旦你信任一個閘能把輸入轉成正確的輸出,你就不再去想電壓,而開始用邏輯來思考。不過真實的閘並非瞬間完成——每個閘在輸入改變後都需要一小段傳播延遲才能穩定下來,這些延遲沿著一條鏈會累加。正是這個延遲,後來限制了整個電路、乃至一顆處理器能用多快的時脈來驅動。
一個只有在前門「且」後門都關上時才響的門鈴,用的就是 AND 閘:輸入 A = 前門已關、輸入 B = 後門已關、輸出 = 響鈴。若 A=1 且 B=1,鈴就響(1);任何一個是 0 就保持安靜(0)。改成 OR 閘的話,只要任一扇門關上就會響。
AND、OR、NOT 涵蓋了日常語言的「兩者皆」「任一」「非」——閘就是把邏輯實體化。
常見的混淆:邏輯裡的 OR 是「包含或」——一個或兩個輸入為 1 時都是 1。日常說的「二者擇一、但不能兩者皆是」的「或」其實是 XOR,是另一個閘。