> For the complete documentation index, see [llms.txt](https://s2.shizhz.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://s2.shizhz.me/s2e2.md).

# 2. 逻辑门（Logic Gates）

设想一个最常见的需求：我们需要为卧室灯装两个开关，一个在门口，一个在床头，使用任何一个开关开灯，都可以使用该开关或者另一个开关关掉，反之亦然。如何设计该电路呢？有经验的同学可能会想如何使用不同的开关通过并联、串联的方式组合起来以达成最终的控制效果，但稍稍分析一下这两个开关的行为，我们就会发现两个开关与灯满足如下状态关系：

| Switch-Door | Switch-Bed | Bulb |
| ----------- | ---------- | ---- |
| Off         | Off        | Off  |
| Off         | On         | On   |
| On          | Off        | On   |
| On          | On         | Off  |

如果我们用 0 表示 Off, 用 1 表示 On, 可以发现该状态与前文中的 XOR 的真值表完全一致。如果有一个基础的电路设备实现了 XOR 的功能，那么我们直接将两个输入端连上开关、输出端连上灯，就收工大吉了。

香农的工作让我们认识到电路设计可以转换为符号的逻辑运算，再回到布尔代数，我们知道任意复杂的复合逻辑运算都可以通过 AND, OR, NOT 三种基本运算通过组合的方式实现。对应到电路设计中，我们也需要能够完成对应逻辑运算的电路器件，这类器件被称为逻辑门（Logic Gates），三个基础的逻辑门分别叫与门（AND Gate）、或门（OR Gate）与非门（NOT Gate），符号如下：

![AND Gate, OR Gate, NOT Gate](/files/-MdWEhQlUyVnku6Ijnq4)

任意复杂的电路都可以通过这三个逻辑门组合而成。上文中的卧室电路需要一个异或门（XOR Gate），其电路符号以及可能的一种实现方式如下图所示：

![XOR Gate](/files/-MdWEw_F5QSa5tzM1pzK)

逻辑门是电路设计的基础组件，有了完成各种逻辑运算的逻辑门，电路设计就变成了一件搭积木式的工程了。

事实上如果继续简化逻辑门的基础单元，会发现可以将与非门（NAND Gate）当着最基础的逻辑门，与非门的真值表与符号表示如下：

![NAND Gate](/files/-MdWF9S20rgroJkipAsq)

通过与非门构建 AND, OR, NOT 门的方式如下：

![Gates Based on NAND Gate](/files/-MdWFMH72Rv7Woz4mMEV)

因此，我们可以将与非门看着是逻辑门最基础的积木。

> 制造逻辑门的物理元件随着技术的进步一直在进步，最开始人们使用继电器来完成电路开关的自动控制，后期使用电子管，世界上第一台通用计算机ENIAC便是使用电子管制造的。后来晶体管的发明颠覆了整个行业，晶体管在体积、能耗等各方面都优于电子管，这使得集成电路及大规模集成电路成为可能，当前一个指甲大小的芯片中包含的晶体管数以亿万。
>
> &#x20;可以参考 [Transistor Count](https://en.wikipedia.org/wiki/Transistor_count) 查看最新的芯片所包含的晶体管数量。
