3.6. 红石逻辑门
小朋友们好!今天我们要学习 Minecraft 中的逻辑门!逻辑门就像是红石世界的小脑筋,可以根据不同的输入信号做出不同的判断哦!
3.6.1. 什么是逻辑门?
逻辑门是一种特殊的红石电路,它可以根据输入的信号来决定是否输出信号。就像我们做选择题一样:如果满足条件,就做一件事;如果不满足,就做另一件事。
3.6.2. 常见的逻辑门
逻辑门名称 |
输入A |
输入B |
输出Q |
像什么? |
|---|---|---|---|---|
非门 |
1 |
0 |
相反按钮 |
|
非门 |
0 |
1 |
||
与门 |
1 |
1 |
1 |
必须两个条件都满足 |
与门 |
1 |
0 |
0 |
|
与门 |
0 |
1 |
0 |
|
与门 |
0 |
0 |
0 |
|
或门 |
1 |
1 |
1 |
满足一个条件就行 |
或门 |
1 |
0 |
1 |
|
或门 |
0 |
1 |
1 |
|
或门 |
0 |
0 |
0 |
|
与非门 |
1 |
1 |
0 |
与门的相反 |
与非门 |
1 |
0 |
1 |
|
与非门 |
0 |
1 |
1 |
|
与非门 |
0 |
0 |
1 |
|
或非门 |
1 |
1 |
0 |
或门的相反 |
或非门 |
1 |
0 |
0 |
|
或非门 |
0 |
1 |
0 |
|
或非门 |
0 |
0 |
1 |
|
异或门 |
1 |
1 |
0 |
两者不同时 |
异或门 |
1 |
0 |
1 |
|
异或门 |
0 |
1 |
1 |
|
异或门 |
0 |
0 |
0 |
|
同或门 |
1 |
1 |
1 |
两者相同时 |
同或门 |
1 |
0 |
0 |
|
同或门 |
0 |
1 |
0 |
|
同或门 |
0 |
0 |
1 |
3.6.3. 用编程关键词表示逻辑门
小朋友们,你们知道吗?逻辑门其实和编程中的逻辑运算符很像!就像 Python 等编程语言中的 and、or、not 一样,逻辑门也在做着类似的判断。
编程中的逻辑运算符对应
非门:对应 not 运算符 - not 输入 = 输出 - 例如:not True = False,not False = True
与门:对应 and 运算符 - 输入A and 输入B = 输出 - 例如:True and True = True,True and False = False
或门:对应 or 运算符 - 输入A or 输入B = 输出 - 例如:True or False = True,False or False = False
异或门:对应 != 运算符 - 输入A != 输入B = 输出 - 例如:True != False = True,True != True = False
同或门:对应 == 运算符 - 输入A == 输入B = 输出 - 例如:True == True = True,True == False = False
用编程表达式理解逻辑门
我们可以用编程中的表达式来表示逻辑门的工作原理:
逻辑门名称 |
编程表达式 |
含义 |
例子 |
|---|---|---|---|
非门 |
not A |
取反 |
not True → False |
与门 |
A and B |
两者都为真 |
True and True → True |
或门 |
A or B |
至少一个为真 |
True or False → True |
与非门 |
not (A and B) |
与门的相反 |
not (True and True) → False |
或非门 |
not (A or B) |
或门的相反 |
not (True or False) → False |
异或门 |
A != B |
两者不同 |
True != False → True |
同或门 |
A == B |
两者相同 |
True == True → True |
信号表示 - 在红石中,1 表示有信号(真/True) - 在红石中,0 表示无信号(假/False)
Python 表达式与红石逻辑门的对应 - 当我们在 Python 中写 if x and y: 时,就相当于使用了一个与门 - 当我们写 if x or y: 时,就相当于使用了一个或门 - 当我们写 if not x: 时,就相当于使用了一个非门 - 当我们写 if x != y: 时,就相当于使用了一个异或门 - 当我们写 if x == y: 时,就相当于使用了一个同或门
3.6.4. 红石非门
非门是最简单的逻辑门,它的作用是:输入信号时关闭,没有输入信号时打开。
用红石怎么做非门? - 放一个方块 - 在方块侧面插一个红石火把 - 在方块的另一个侧面放红石线
当你在方块上放红石信号时,红石火把会熄灭,红石线也会熄灭。 当你拿走方块上的红石信号时,红石火把会重新亮起,红石线也会亮起。
3.6.5. 红石与门
与门的作用是:只有当两个输入都有信号时,才会输出信号。
用红石怎么做与门? - 放两个方块,中间隔一个空格 - 在两个方块上各插一个红石火把 - 在两个方块之间的空格上方放一个方块 - 在最上面的方块上放红石线
只有当两个红石火把都熄灭时(也就是两个输入方块都被充能时),最上面的方块才会被充能,红石线才会亮起。
3.6.6. 红石或门
或门的作用是:只要有一个输入有信号,就会输出信号。
用红石怎么做或门? - 放两个方块,并排放在一起 - 在两个方块上各放红石线 - 在两个方块前面放一个方块 - 在前面的方块上放红石线
当任何一个输入红石线有信号时,前面的方块都会被充能,输出红石线就会亮起。
3.6.7. 红石异或门
异或门的作用是:当两个输入信号不同时,才会输出信号。
用红石怎么做异或门? - 首先做一个或门 - 然后做一个与非门 - 最后将或门的输出和与非门的输出连接到一个与门
只有当两个输入信号不同时(一个有信号,一个无信号),异或门才会输出信号。
3.6.8. 红石同或门
同或门的作用是:当两个输入信号相同时,才会输出信号。
用红石怎么做同或门? - 首先做一个异或门 - 然后在异或门的输出端接一个非门
当两个输入信号相同时(都有信号或都无信号),同或门才会输出信号。
3.6.9. 红石与非门和或非门
与非门**的作用是:**当两个输入都有信号时,不输出信号;否则输出信号。 - 用红石怎么做与非门?在与门的输出端接一个非门
或非门**的作用是:**当至少有一个输入有信号时,不输出信号;否则输出信号。 - 用红石怎么做或非门?在或门的输出端接一个非门
3.6.10. 逻辑门的应用
逻辑门在 Minecraft 中有很多用处:
安全门:用与门做一个需要两个按钮同时按下才能打开的门
自动灯:用或门做一个白天或晚上都能亮的灯
陷阱:用非门做一个有人踩压力板时关闭的门
密码锁:用多个逻辑门组合做一个需要输入正确密码才能打开的门
自动农场:用逻辑门控制农场的自动收割和种植
身份验证:用异或门做一个需要输入正确组合才能通过的系统
状态检测:用同或门检测两个信号是否相同
3.6.11. 逻辑门的符号表示
逻辑门在数字电路中有标准的符号表示:
逻辑门名称 |
符号 |
含义 |
|---|---|---|
非门 |
NOT |
取反输入信号 |
与门 |
AND |
两个输入都为真时输出真 |
或门 |
OR |
至少一个输入为真时输出真 |
与非门 |
NAND |
与门的输出取反 |
或非门 |
NOR |
或门的输出取反 |
异或门 |
XOR |
两个输入不同时输出真 |
同或门 |
XNOR |
两个输入相同时输出真 |
3.6.12. 组合逻辑电路
组合逻辑电路的定义:由多个逻辑门组合而成,输出只取决于当前输入的电路。
常见的组合逻辑电路:
半加器 - 用于两个一位二进制数的加法 - 有两个输入(A、B)和两个输出(和、进位) - 用一个异或门和一个与门组成
全加器 - 用于三个一位二进制数的加法(包括进位输入) - 有三个输入(A、B、进位输入)和两个输出(和、进位输出) - 用两个半加器和一个或门组成
解码器 - 将二进制代码转换为特定的输出信号 - 例如3-8解码器,可以将3位二进制数转换为8个输出信号之一
编码器 - 将多个输入信号转换为二进制代码 - 例如8-3编码器,可以将8个输入信号之一转换为3位二进制数
3.6.13. 时序逻辑电路基础
时序逻辑电路的定义:输出不仅取决于当前输入,还取决于历史输入的电路。
基本的时序逻辑电路:
触发器 - 可以存储一位二进制信息 - 常见的有RS触发器、D触发器、JK触发器 - 用逻辑门和反馈电路组成
寄存器 - 由多个触发器组成,用于存储多位二进制信息 - 可以用于暂存数据
计数器 - 用于计数脉冲信号的个数 - 可以用触发器和逻辑门组成
3.6.14. 逻辑门的优化设计
优化目标: - 减少元件数量 - 提高电路速度 - 降低能耗
优化方法:
逻辑化简 - 使用布尔代数规则化简逻辑表达式 - 减少所需的逻辑门数量
共用逻辑门 - 多个输出共享部分逻辑门 - 减少整体元件数量
使用更高级的逻辑门 - 例如用与非门实现其他逻辑门 - 与非门是通用逻辑门,可以实现任何逻辑功能
3.6.15. 更多应用案例
案例1:密码锁 1. 用多个按钮作为输入 2. 用逻辑门组合实现密码验证 3. 只有输入正确的密码序列才会输出信号
案例2:自动灌溉系统 1. 用太阳传感器检测白天 2. 用比较器检测土壤湿度 3. 用逻辑门组合控制浇水装置
案例3:智能照明系统 1. 用 daylight sensor 检测光线强度 2. 用压力板检测是否有人 3. 用逻辑门组合控制灯光开关
案例4:交通信号灯 1. 用时钟电路控制信号灯的切换 2. 用逻辑门实现不同方向的灯的协调 3. 可以设置不同的时间段的灯光模式
3.6.16. 趣味小实验
实验1:制作半加器 1. 放两个按钮作为输入A和B 2. 制作一个异或门和一个与门 3. 异或门的输出作为和 4. 与门的输出作为进位 5. 测试不同输入组合的输出
实验2:密码锁 1. 放3个按钮作为密码输入 2. 用逻辑门组合实现特定的密码(如按钮1和3同时按下) 3. 正确输入时激活红石灯 4. 测试密码的正确性
实验3:智能灯 1. 放一个太阳传感器和一个压力板 2. 用逻辑门组合实现:只有在晚上且有人时才开灯 3. 测试不同条件下的灯光状态
实验4:交通信号灯 1. 用红石中继器制作时钟电路 2. 用逻辑门控制红、黄、绿三个灯的切换 3. 调整时钟速度,使灯光按合理的时间切换
3.6.17. 布尔代数基础
布尔代数的基本定律:
交换律 - A AND B = B AND A - A OR B = B OR A
结合律 - (A AND B) AND C = A AND (B AND C) - (A OR B) OR C = A OR (B OR C)
分配律 - A AND (B OR C) = (A AND B) OR (A AND C) - A OR (B AND C) = (A OR B) AND (A OR C)
德摩根定律 - NOT (A AND B) = NOT A OR NOT B - NOT (A OR B) = NOT A AND NOT B
互补律 - A AND NOT A = 0 - A OR NOT A = 1
小朋友们,现在你们知道逻辑门的厉害了吗?试着用逻辑门做一个智能装置吧!