简单逻辑门
复习
- 数据的大小与单位:认识了 bit、Byte 及更大的数据单位,知道 1024 与 1000 的差异
- 文字与编码:文字靠字符编码表示,ASCII、Unicode 和 UTF-8 解决了编号与存储等系列问题
- 小数与浮点数:二进制小数可用定点或浮点表示,浮点数范围大但精度有限
TL;DR
- 逻辑门是计算机处理二进制信号的基本单元
- 三个基础逻辑门:与门(AND)、或门(OR)、非门(NOT)
- 通过组合这些基本逻辑门,可以实现复杂的计算功能
正文
引言
前面我们知道了计算机使用二进制,即 0 和 1 来表示数据。只有表示还不够,数据还需要处理。
而处理的最基础单位,就是今天所要学习的逻辑门。
逻辑门就像是电路中的“决策者”,它们根据输入的 0 和 1,按照特定的规则输出 0 或 1。看起来很抽象,觉得这没什么用,但我们将在后面看到,逻辑门怎样通过特定的连接方式,一步步变成半加器、全加器、算术逻辑单元 ALU 直至中央处理器 CPU。
最基本的三个逻辑门是:与门(and)、或门(or)和非门(not)。
注意, 与或非三种门,其实并不能直接获得 ,需要用晶体管搭建。但由于晶体管电路太过复杂,超出了本指南范围,为简化说明,本指南 认为与或非三门可以直接获得 。读者若有兴趣可以查看本章最后的补充模块,晶体管属于集成电路内容,如无兴趣略过即可,不影响后续学习。
基本逻辑门
与门(AND)
与门的特点是:只有当所有输入都为 1 时,输出才为 1。“全票才通过”。
- 要打开保险箱,需要同时输入正确的密码 和 使用正确的钥匙
- 要通过考试,需要理论考试合格 和 实践考试合格
真值表:
| 输入 A | 输入 B | 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
或门(OR)
或门的特点是:只要有任意一个输入为 1,输出就为 1。“一票就通过”。
- 要开灯,可以按下楼上的开关 或 楼下的开关
- 要进入会场,可以使用纸质票 或 电子票
真值表:
| 输入 A | 输入 B | 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
非门(NOT)
非门的特点是:输出与输入相反。
- 电灯开关:按一下开,再按一下关
- 自动门:有人靠近时开,没人时关
真值表:
| 输入 | 输出 |
|---|---|
| 0 | 1 |
| 1 | 0 |
逻辑门的补充
由基础三门还可构成稍复杂一点的逻辑门:nand(not and 之缩写)、nor(not or 之缩写),分别是与非门、或非门。其结果就是与门、非门的结果取反。
| 输入 A | 输入 B | and 输出 | nand 输出 | or 输出 | nor 输出 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 0 | 1 | 0 |
逻辑门的应用
这些基本逻辑门可以组合起来完成更复杂的功能,在后面我们将会看到:
- 数据选择:使用与门和或门可以构建选择器
- 数据比较:使用多个逻辑门可以比较两个数的大小
- 数据运算:使用逻辑门的组合可以实现加法器
小结
知识点
- 逻辑门是处理二进制信号的基本单元
- 与门(AND):所有输入为 1 时输出 1
- 或门(OR):任意输入为 1 时输出 1
- 非门(NOT):输出与输入相反
参考资料
- Wikipedia(zh):数字逻辑门
- 《编码:隐匿在计算机软硬件背后的语言》第 11 章:逻辑门
- 《计算机组成与设计:硬件/软件接口》第 4 章:处理器
- Wikipedia(zh):晶体管:现代几乎所有电子设备的基石。
- Wikipedia(zh):函数完备性
推荐
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪
补充(选修,可跳过)
以下内容涉及晶体管,属于集成电路范畴。零基础读者可以完全跳过,不影响后续学习。
CMOS(互补式金属氧化物半导体)晶体管搭建基础逻辑门的电路图如下。图中也展示了与门由 NAND 加 NOT、或门由 NOR 加 NOT 构成的关系:
在晶体管的层面,最基础的逻辑门其实是 nand 或者 nor,并非 and、or、not 三门。
and 在晶体管层面上其实是 nand + not。or 同理(nor + not),不过也可以用 nand 搭建。
not 最简单,和 nand/nor 一样可以直接用晶体管搭出来。not 使用 2 个晶体管,而 nand/nor 使用 4 个。
nand 和 nor 两门因自身函数完备性,均可构成基础三门。所以一台计算机可以只由 nand 门或 nor 门构成。