logic gate
我来为你详细解释逻辑门(与门 AND、与非门 NAND、或门 OR、或非门 NOR、非门 NOT)的定义、功能,并通过例子说明它们的输入输出关系。这些逻辑门是数字电路和计算机的基础。
How to
逻辑门(如 AND、NAND、OR、NOR、NOT)在计算机中用二进制(0 和 1)表示输入和输出,0 表示“假”(低电平),1 表示“真”(高电平)。它们的行为通过真值表定义,并可以用位运算实现。
二进制表示的基本概念
- 输入和输出:用 0 和 1 表示。
- 真值表:展示输入和输出的二进制关系。
- 位运算:通过按位运算符(如
&
、|
、~
)实现逻辑门功能。
1. 与门 (AND Gate)
定义
所有输入为 1 时,输出为 1,否则为 0。
二进制真值表
A | B | Y = A ∧ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
二进制运算
- 用按位与运算符
&
表示:Y = A & B
。 - 示例:
0 & 0 = 0
0 & 1 = 0
1 & 1 = 1
2. 与非门 (NAND Gate)
定义
所有输入为 1 时,输出为 0,其他情况为 1。
二进制真值表
A | B | Y = ¬(A ∧ B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
二进制运算
- 先计算
A & B
,再取反(用~
或按位取反后处理)。 - 示例:
¬(0 & 0) = ¬0 = 1
¬(1 & 1) = ¬1 = 0
- 在编程中:
Y = ~(A & B) & 1
(取反后保留最低位)。
3. 或门 (OR Gate)
定义
至少一个输入为 1 时,输出为 1,否则为 0。
二进制真值表
A | B | Y = A ∨ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
二进制运算
- 用按位或运算符
|
表示:Y = A | B
。 - 示例:
0 | 0 = 0
0 | 1 = 1
1 | 1 = 1
4. 或非门 (NOR Gate)
定义
所有输入为 0 时,输出为 1,否则为 0。
二进制真值表
A | B | Y = ¬(A ∨ B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
二进制运算
- 先计算
A | B
,再取反。 - 示例:
¬(0 | 0) = ¬0 = 1
¬(1 | 0) = ¬1 = 0
- 在编程中:
Y = ~(A | B) & 1
。
5. 非门 (NOT Gate)
定义
输入为 0 时输出 1,输入为 1 时输出 0。
二进制真值表
A | Y = ¬A |
---|---|
0 | 1 |
1 | 0 |
二进制运算
- 用按位取反运算符
~
表示(需处理位数,通常只取最低位)。 - 示例:
¬0 = 1
¬1 = 0
- 在编程中:
Y = ~A & 1
。
Python 代码示例
以下是用 Python 位运算符实现逻辑门的代码:
# 与门
def AND_gate(a, b):
return a & b
# 与非门
def NAND_gate(a, b):
return ~(a & b) & 1
# 或门
def OR_gate(a, b):
return a | b
# 或非门
def NOR_gate(a, b):
return ~(a | b) & 1
# 非门
def NOT_gate(a):
return ~a & 1
# 测试
inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
print("A B AND NAND OR NOR")
for a, b in inputs:
print(f"{a} {b} {AND_gate(a, b)} {NAND_gate(a, b)} {OR_gate(a, b)} {NOR_gate(a, b)}")
print("\nA NOT")
for a in [0, 1]:
print(f"{a} {NOT_gate(a)}")