Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 배우는 논리 게이트 완벽 가이드

이 글에서는 파이썬(Python)에서 논리 게이트(Logic Gate)를 구현하는 방법을 자세히 살펴봅니다. 각 논리 게이트의 동작 원리와 함께 이해하기 쉬운 예제 코드를 소개하니, 끝까지 읽고 나면 직접 구현할 수 있을 것입니다.

논리 게이트는 전기 신호를 처리하는 가장 기본적인 소자로, 전기·전자 공학 분야에서 널리 사용됩니다. 다이오드나 트랜지스터 같은 전자 부품들을 적절히 배치하여 다양한 논리 회로를 설계할 수 있으며, 오늘날 모든 디지털 시스템의 핵심 요소이기도 합니다. 이 글에서는 기본적인 논리 게이트인 AND, OR, NOT, 그리고 범용 게이트(universal gate)라 불리는 NAND, NOR 게이트를 파이썬 3.x 환경에서 구현해 보겠습니다.

각 게이트는 해당 게이트의 진리표(truth table)에 맞춰 사용자 정의 함수를 작성하는 방식으로 손쉽게 구현할 수 있습니다.

1. AND 게이트 구현하기

AND 게이트는 두 입력이 모두 1일 때만 1(True)을 출력하고, 그 외의 경우에는 0(False)을 반환합니다.

예제 코드

def AND(a, b):
    if a == 1 and b == 1:
        return True
    else:
        return False

# 메인 함수
if __name__ == '__main__':
    print(AND(0, 0))
    print(AND(1, 0))
    print(AND(0, 1))
    print(AND(1, 1))

실행 결과

False
False
False
True

2. OR 게이트 구현하기

OR 게이트는 두 입력 중 하나라도 1이면 1(True)을 출력하고, 두 입력이 모두 0일 때만 0(False)을 반환합니다.

예제 코드

def OR(a, b):
    if a == 1:
        return True
    elif b == 1:
        return True
    else:
        return False

# 메인 함수
if __name__ == '__main__':
    print(OR(0, 0))
    print(OR(1, 0))
    print(OR(0, 1))
    print(OR(1, 1))

실행 결과

False
True
True
True

3. NOT 게이트 구현하기

NOT 게이트는 단일 입력을 반전시키는 인버터(inverter) 역할을 합니다. 입력이 0이면 1을, 입력이 1이면 0을 반환합니다.

예제 코드

def NOT(a):
    if a == 0:
        return 1
    elif a == 1:
        return 0

# 메인 함수
if __name__ == '__main__':
    print(NOT(0))
    print(NOT(1))

실행 결과

1
0

4. NAND 게이트 구현하기

NAND 게이트는 AND 게이트의 출력을 반전시킨 형태로, 두 입력이 모두 1일 때만 0(False)을 출력하고 나머지 경우에는 모두 1(True)을 반환합니다. NAND는 어떤 논리 회로든 조합하여 만들어낼 수 있는 범용 게이트입니다.

예제 코드

def NAND(a, b):
    if a == 1 and b == 1:
        return False
    else:
        return True

# 메인 함수
if __name__ == '__main__':
    print(NAND(0, 0))
    print(NAND(1, 0))
    print(NAND(0, 1))
    print(NAND(1, 1))

실행 결과

True
True
True
False

5. NOR 게이트 구현하기

NOR 게이트는 OR 게이트의 출력을 반전시킨 형태로, 두 입력이 모두 0일 때만 1(True)을 출력하고 나머지 경우에는 모두 0(False)을 반환합니다. NOR 역시 NAND와 마찬가지로 범용 게이트에 해당합니다.

예제 코드

def NOR(a, b):
    if a == 0 and b == 0:
        return True
    elif a == 0 and b == 1:
        return False
    elif a == 1 and b == 0:
        return False
    elif a == 1 and b == 1:
        return False

# 메인 함수
if __name__ == '__main__':
    print(NOR(0, 0))
    print(NOR(1, 0))
    print(NOR(0, 1))
    print(NOR(1, 1))

실행 결과

True
False
False
False

마무리

이 글에서는 파이썬 3.x 환경에서 AND, OR, NOT, NAND, NOR 등 기본적인 논리 게이트를 함수로 구현하는 방법을 알아보았습니다. 특히 NAND와 NOR은 하나만으로 모든 논리 연산을 표현할 수 있는 범용 게이트라는 점도 함께 확인했습니다. 진리표만 있으면 어떤 논리 게이트든 파이썬 함수로 쉽게 옮길 수 있으니, XOR이나 XNOR 같은 다른 게이트도 직접 구현해 보면서 개념을 확실히 다져 보시기 바랍니다.