이 글에서는 파이썬(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 같은 다른 게이트도 직접 구현해 보면서 개념을 확실히 다져 보시기 바랍니다.