逻辑门是数字电路处理 0 和 1 的基本单元。每个门接收一个或多个二进制输入,按照固定逻辑规则产生一个二进制输出。处理器能够加减数字、比较数据、选择指令和控制存储器,最终都依赖大量逻辑门的组合。
这篇指南覆盖七种常见逻辑门类型:NOT、AND、OR、NAND、NOR、XOR 和 XNOR。你将看到完整的逻辑门真值表、常用逻辑门符号、通用门的构造能力,以及 XOR 和 AND 如何组成半加器。如果需要先复习 0、1 和位值,可以阅读二进制数制指南或什么是二进制。
逻辑门如何工作
数字逻辑通常把两个离散状态写成 0 和 1,也可以理解为假与真、低电平与高电平,或者关闭与开启。实际电路中的电压不会永远精确等于零或某个固定值,芯片会把一定范围内的电压判定为逻辑低或逻辑高。
门电路描述的是输入与输出之间的规则。例如,双输入 AND 门只有在 A 和 B 都为 1 时输出 1;NOT 门则只有一个输入,并把输入反转。规则可以用四种常见方式表达:
- 真值表列出所有输入组合及对应输出。
- 逻辑符号在电路图中表示门的类型和连接方向。
- 布尔表达式用 AND、OR、NOT 等运算写出关系。
- 时序波形展示输入随时间变化时,输出如何响应。
对于有 个二进制输入的组合逻辑,真值表共有 行。一个双输入门有 00、01、10、11 四种输入组合,因此必须检查四行才能完整描述它。
七种逻辑门真值表总览
NOT 是单输入门,需要单独列出。其规则是将输入反转:
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
其余六种常见门通常以 A、B 两个输入为例。下面的逻辑门真值表在一处对比全部输出:
| A | B | AND | OR | NAND | NOR | XOR | XNOR |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
观察这张表可以先记住三个关系:NAND 是 AND 的反相,NOR 是 OR 的反相,XNOR 是 XOR 的反相。名称末尾的 N 来自 NOT,电路符号通常也会在输出端增加一个小圆圈表示反相。
NOT 门:反相器
NOT 门只有一个输入,因此也称为反相器。输入为 0 时输出 1,输入为 1 时输出 0。布尔表达式常写为:
Y = NOT A
Y = ¬A常见 NOT 门符号是一个指向输出方向的三角形,输出端带小圆圈。这个圆圈叫反相泡,表示信号在该位置被取反。
NOT 门可用于生成互补控制信号。例如,电路拥有 ENABLE 信号时,经过 NOT 门就能得到 DISABLE。它也能与其他门结合,构造 NAND、NOR、XNOR 等反相输出。
需要注意,反相逻辑值并不等于给数学整数加负号。NOT 处理的是逻辑状态;在固定宽度二进制中,按位取反会翻转每一位,但结果如何解释为有符号整数还取决于位宽和补码规则。
AND 门:所有条件都成立
AND 门只有在所有输入都为 1 时输出 1。双输入 AND 的布尔表达式是:
Y = A AND B
Y = A · B| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
ANSI 风格的 AND 门符号通常左侧平直、右侧为半圆形。多个输入可以进入同一个 AND 门;只有每个输入都为 1,输出才为 1。
AND 门适合表达“全部许可条件都满足”。例如,一个设备可能要求电源正常、保护盖关闭并且启动按钮按下,才允许电机运行。任何一个条件为 0,AND 输出都会变为 0。
在二进制运算中,按位 AND 会分别比较相同位置的位。例如 1101 AND 1011 = 1001。这里的每一列都相当于独立的双输入 AND 门。
OR 门:至少一个条件成立
OR 门在至少一个输入为 1 时输出 1,只有全部输入都是 0 时才输出 0:
Y = A OR B
Y = A + B| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
OR 门符号的输入侧是弧形,输出侧逐渐收拢成尖端。它常用于汇总多个触发源:手动按钮或自动传感器任一激活,都可以让 OR 门输出 1。
逻辑 OR 与日常语言中的“或者”容易产生一个误会。在普通双输入 OR 中,A 和 B 同时为 1 时输出仍是 1,它是包含性“或”。如果只允许其中一个输入为 1,则需要 XOR 门。
NAND 门:AND 后取反
NAND 的含义是 NOT AND。它先进行 AND,再把结果反转:
Y = NOT (A AND B)
Y = ¬(A · B)| A | B | A NAND B |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
NAND 门符号是在 AND 门输出端增加反相泡。它只有在所有输入都为 1 时输出 0,其余情况都输出 1。
NAND 特别重要,因为它是通用门:只使用 NAND,就能组合出 NOT、AND、OR,进而实现任意组合逻辑功能。实际芯片设计可能复用 NAND 结构,以减少不同电路单元的种类并优化实现。
NOR 门:OR 后取反
NOR 的含义是 NOT OR。它先进行 OR,再反转输出:
Y = NOT (A OR B)
Y = ¬(A + B)| A | B | A NOR B |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
NOR 门符号是在 OR 门输出端增加反相泡。只有所有输入均为 0 时,NOR 才输出 1。它适合检测“没有任何请求”或“所有条件均未激活”的状态。
与 NAND 一样,NOR 也是通用门。某些锁存器和控制电路会直接使用交叉连接的 NOR 门保存一个逻辑状态,但这已经从纯组合逻辑进入具有记忆能力的时序逻辑。
XOR 门:输入不同时为真
XOR 是 exclusive OR,即异或。对于两个输入,A 与 B 不同时输出 1,相同时输出 0:
Y = A XOR B
Y = A ⊕ B| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR 门符号与 OR 相似,但输入侧多一条平行弧线。这条额外曲线是区分 XOR 与 OR 的关键,不应只凭门的文字标签判断。
XOR 可以看作“不相等检测器”,也可以看作无进位的一位二进制加法。0+0 与 1+1 的最低位为 0,0+1 与 1+0 的结果位为 1。因此,XOR 正好用作半加器的“和”输出。
异或还具有“同一个值操作两次会还原”的性质:A XOR B XOR B = A。这个性质用于切换位、差异检测和某些校验过程,但简单 XOR 本身不提供现代加密所需的完整安全性。
XNOR 门:输入相同时为真
XNOR 是 XOR 的反相,也称为同或或等价门。两个输入相同时输出 1,不同时输出 0:
Y = NOT (A XOR B)
Y = ¬(A ⊕ B)| A | B | A XNOR B |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
XNOR 门符号是在 XOR 门的输出端增加反相泡。它本质上是一位相等比较器:输出 1 表示两个位相等。比较多位数据时,可以先对每一对位执行 XNOR,再用 AND 检查所有比较结果是否都为 1。
如何识别逻辑门符号
电路图通常让信号从左向右流动,输入位于符号左侧,输出位于右侧。ANSI/IEEE 常见门电路符号可以通过轮廓快速区分:
| 门类型 | 符号特征 |
|---|---|
| NOT | 三角形,输出端有一个小圆圈 |
| AND | 输入侧平直,输出侧呈半圆形 |
| OR | 输入侧弯曲,输出侧收拢为尖端 |
| NAND | AND 轮廓,输出端增加小圆圈 |
| NOR | OR 轮廓,输出端增加小圆圈 |
| XOR | OR 轮廓,输入侧多一条弧线 |
| XNOR | XOR 轮廓,输出端增加小圆圈 |
不同标准的画法可能不同。IEC 风格常用矩形框和功能标记表示门,因此识别电路时还应查看图例。无论外形如何变化,逻辑门真值表定义的输入输出关系不会改变。
反相泡不仅能出现在输出端,也可能画在输入端,表示该输入为低有效。例如带输入泡的 AND 门与普通 AND 门并不完全相同。阅读复杂电路图时,要逐个检查泡的位置和信号名称上的低有效标记。
为什么 NAND 和 NOR 是通用门
如果一种门可以单独构造 NOT、AND 和 OR,它就能进一步组合出所有其他数字逻辑单元,因此称为通用门。NAND 和 NOR 都具备这种功能。
只使用 NAND 的基本构造如下:
NOT A = A NAND A
A AND B = (A NAND B) NAND (A NAND B)
A OR B = (A NAND A) NAND (B NAND B)第一行把同一个信号接入 NAND 的两个输入。A AND A 等于 A,再经过反相就得到 NOT A。第二行先产生 NAND 结果,再用一个 NAND 当反相器。第三行先分别反转 A、B,再通过 NAND 得到 OR。
只使用 NOR 也能完成相同目标:
NOT A = A NOR A
A OR B = (A NOR B) NOR (A NOR B)
A AND B = (A NOR A) NOR (B NOR B)“可以只用一种门实现”不代表真实芯片一定应该这样设计。工程师还需要考虑门延迟、晶体管数量、功耗、扇出和布线。通用性说明的是逻辑表达能力,而不是任何场景下的最佳物理实现。
逻辑门如何构成半加器
半加器把两个一位二进制数 A、B 相加,输出和位 S 与进位 C。它不接收来自更低位的进位,所以称为“半”加器。
| A | B | 和 S | 进位 C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
把这张表与前面的逻辑门真值表比较,会发现:
S = A XOR B
C = A AND B因此,一个 XOR 门和一个 AND 门就能组成半加器。当 1+1 时,当前位写 0,并向更高位进 1,这正好对应 XOR 输出 0、AND 输出 1。
全加器还要接收输入进位 Cin。它可以由两个半加器和一个 OR 门组成,核心关系为:
S = A XOR B XOR Cin
Cout = (A AND B) OR (Cin AND (A XOR B))将多个全加器按位连接,就能处理更长的二进制加法。二进制加法计算器展示的逐位进位过程,对应的正是这种逻辑关系;二进制减法计算器则可以帮助观察借位。需要直接执行完整运算时,可以使用二进制计算器。
逻辑门的实际用途
单个门的功能简单,但多个门组合后可以形成复杂数字系统:
- 算术电路: XOR、AND 和 OR 组成加法器;加法器及补码逻辑进一步支持减法。
- 比较器: XNOR 检查对应位是否相同,AND 汇总所有位的比较结果。
- 多路选择器: 根据控制位从多个数据输入中选择一个输出。
- 译码器: 把二进制代码转换成独立的选择信号,例如选择某个存储位置。
- 校验电路: XOR 可以计算奇偶校验位,帮助发现部分传输错误。
- 控制逻辑: AND 确认多个条件同时满足,OR 汇总多个请求,NOT 生成互补信号。
- 存储单元: 交叉连接的 NAND 或 NOR 可以构成基本锁存器,保存一个状态。
组合逻辑的输出只由当前输入决定;带锁存器、触发器和时钟的时序逻辑还会受先前状态影响。理解七种基础逻辑门,是继续学习寄存器、计数器、状态机和处理器数据通路的前提。
逻辑门与按位运算的关系
程序语言中的 AND、OR、XOR、NOT 常以按位运算符出现。硬件门电路一次处理一个或少量逻辑信号,按位运算则把同一规则应用到整数的每一位。
例如:
1101
XOR 1011
--------
0110四列分别执行 XOR:1 XOR 1 = 0、1 XOR 0 = 1、0 XOR 1 = 1、1 XOR 1 = 0。结果为 0110。这与返回单个真/假值的逻辑运算不同;具体语言还可能区分布尔运算符和按位运算符,并采用不同的短路求值规则。
进行按位运算前必须明确位宽。NOT 会翻转字段中的每一位,NOT 00001111 在 8 位下是 11110000,在 16 位下却会有 16 个输出位。若再把结果解释为补码有符号数,其十进制含义还会变化。
分析逻辑门电路的步骤
面对由多个门组成的电路,可以按信号流逐层计算:
- 标记所有输入及其当前值。
- 找到最靠近输入、其依赖已经确定的门。
- 根据该门的真值表计算中间输出,并给中间信号命名。
- 沿连接线继续向右计算,直到得到最终输出。
- 对所有输入组合重复过程,构造整个电路的真值表。
例如,表达式 (A XOR B) AND C 可以先计算中间值 X=A XOR B,再计算 Y=X AND C。不要看到 AND 就先算 B AND C,括号和实际连线决定运算顺序。
真实硬件还存在传播延迟。输入变化后,各个门不会在完全相同的瞬间更新;多条路径延迟不同,可能产生短暂毛刺。基础真值表描述稳定状态下的逻辑结果,而时序分析负责判断输出何时稳定。
常见错误
把 OR 和 XOR 当成同一种门
当输入为 01 或 10 时,两者都输出 1,但输入为 11 时 OR 输出 1、XOR 输出 0。“至少一个为真”是 OR,“恰好一个为真”才是双输入 XOR。
忽略反相泡
AND 与 NAND、OR 与 NOR 的主体轮廓相似,输出端的小圆圈却会反转全部结果。输入端的泡同样会改变逻辑含义。
漏掉真值表输入组合
双输入门必须列四行,三输入电路必须列八行。只用一两个示例不能证明两个逻辑表达式等价。
混淆逻辑值与电压
逻辑 0 和 1 是抽象状态,具体电压阈值由器件系列和供电条件决定。不能假设所有电路都把某个固定电压解释为同一逻辑值。
忽略位宽和有符号解释
门只处理位,不知道一个位串代表无符号数、补码整数、字符还是指令。解释运算结果时必须结合位宽与数据类型。
常见问题
基本逻辑门有哪些?
最基础的三种是 AND、OR 和 NOT。NAND、NOR、XOR、XNOR 是常用派生类型。数字电路通常以这七种门及其组合来说明核心布尔关系。
什么是逻辑门真值表?
逻辑门真值表列出所有可能的二进制输入组合和每种组合对应的输出。双输入门有四行,三输入电路有八行。真值表是验证门功能和比较逻辑表达式最直接的方法。
哪些逻辑门是通用门?
NAND 和 NOR 都是通用门。只使用 NAND,或只使用 NOR,就可以构造 NOT、AND、OR,并进一步实现任意组合逻辑功能。
XOR 与 OR 有什么区别?
OR 在至少一个输入为 1 时输出 1,包括两个输入都为 1;双输入 XOR 只在两个输入不同时输出 1。输入 11 是区分它们的关键:OR 输出 1,XOR 输出 0。
XNOR 门有什么用途?
XNOR 在两个输入相同时输出 1,因此适合比较两个位。多个 XNOR 配合 AND,可以检查两个多位二进制数是否完全相等。
半加器需要哪些门?
基本半加器需要一个 XOR 门产生和位,以及一个 AND 门产生进位。半加器没有输入进位;需要处理输入进位时,应使用全加器。
逻辑门就是晶体管吗?
不是。这类门是输入输出功能的抽象,一个门通常由多个晶体管实现。不同工艺可以用不同晶体管结构实现相同的真值表。
逻辑门能存储数据吗?
单个普通组合门不保存历史状态。但把 NAND 或 NOR 等门按反馈方式连接,可以构成锁存器;再结合时钟可形成触发器和寄存器。
总结
逻辑门把二进制输入映射为确定输出。NOT 反转输入,AND 要求全部为真,OR 接受至少一个为真,NAND 与 NOR 分别反转 AND 和 OR,XOR 检测不同,XNOR 检测相同。图形符号帮助阅读连接关系,真值表则精确定义每一种输入组合的结果。
掌握这些门电路后,就能理解半加器为何使用 XOR 产生和、AND 产生进位,也能看懂比较器、选择器和控制电路的基本结构。接下来可以用二进制加法计算器观察逐位进位,或用二进制计算器验证更完整的二进制运算。
