Cửa logic (Logic Gates) là khối xây dựng cơ bản của mạch số. Bài này triển khai các cửa logic cơ bản trong Python bằng hàm tự định nghĩa theo bảng chân lý.
1. Cửa AND
Chỉ trả về True khi CẢ HAI đầu vào đều True (1).
def AND(a, b):
if a == 1 and b == 1:
return True
return False
# Test
for x, y in [(0,0), (1,0), (0,1), (1,1)]:
print(f"AND({x}, {y}) = {AND(x, y)}")
Kết quả
AND(0, 0) = False AND(1, 0) = False AND(0, 1) = False AND(1, 1) = True
2. Cửa OR
Trả về True nếu ÍT NHẤT MỘT đầu vào True.
def OR(a, b):
if a == 1 or b == 1:
return True
return False
for x, y in [(0,0), (1,0), (0,1), (1,1)]:
print(f"OR({x}, {y}) = {OR(x, y)}")
Kết quả
OR(0, 0) = False OR(1, 0) = True OR(0, 1) = True OR(1, 1) = True
3. Cửa NOT
Đảo ngược đầu vào (1 → 0, 0 → 1).
def NOT(a):
if a == 0:
return 1
elif a == 1:
return 0
print(f"NOT(0) = {NOT(0)}") # 1
print(f"NOT(1) = {NOT(1)}") # 0
4. Cửa NAND (NOT AND) - Universal Gate
Phủ định của AND. Có thể xây dựng mọi cửa logic khác từ NAND.
def NAND(a, b):
if a == 1 and b == 1:
return False
return True
for x, y in [(0,0), (1,0), (0,1), (1,1)]:
print(f"NAND({x}, {y}) = {NAND(x, y)}")
Kết quả
NAND(0, 0) = True NAND(1, 0) = True NAND(0, 1) = True NAND(1, 1) = False
5. Cửa NOR (NOT OR) - Universal Gate
Phủ định của OR. Cũng là universal gate.
def NOR(a, b):
if a == 0 and b == 0:
return True
return False
for x, y in [(0,0), (1,0), (0,1), (1,1)]:
print(f"NOR({x}, {y}) = {NOR(x, y)}")
Kết quả
NOR(0, 0) = True NOR(1, 0) = False NOR(0, 1) = False NOR(1, 1) = False
Mở rộng: Xây dựng từ NAND (Universal)
def NOT_from_NAND(a):
return NAND(a, a)
def AND_from_NAND(a, b):
return NOT_from_NAND(NAND(a, b))
def OR_from_NAND(a, b):
return NAND(NOT_from_NAND(a), NOT_from_NAND(b))
# Test
print("NOT from NAND:", NOT_from_NAND(0), NOT_from_NAND(1))
print("AND from NAND:", AND_from_NAND(1, 1), AND_from_NAND(1, 0))
print("OR from NAND:", OR_from_NAND(0, 1), OR_from_NAND(0, 0))
Kết luận
Đã triển khai 5 cửa logic cơ bản: AND, OR, NOT, NAND, NOR. NAND và NOR là universal gates - có thể xây dựng mọi mạch logic khác. Python cho phép mô phỏng dễ dàng để học tập, verify thiết kế số.