Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Logic Gates trong Python: AND, OR, NOT, NAND, NOR

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ố.