# 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) 查看最新的芯片所包含的晶体管数量。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://s2.shizhz.me/s2e2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
