yeolyi.com성열의 컴퓨터공학

AND·OR·NOT 게이트

‘신호등이 초록불이고 전방에 장애물이 없으면 직진한다’라는 판단은 불 대수와 진리표로 표현할 수 있습니다. 그리고 섀넌의 통찰 덕분에 이런 논리가 실제 전기 회로로 구현될 수 있습니다.

하지만 진리표는 종이 위의 설계도일 뿐입니다. 이 설계도대로 실제로 작동하는 회로를 만들려면 어떻게 해야 할까요? 바로 논리 게이트가 필요합니다.

불 대수에는 다양한 연산이 있지만, AND, OR, NOT은 특별합니다. 우리가 일상에서 ‘그리고’, ‘또는’, ‘아닌’이라는 말로 사고하는 방식과 직결되어 직관적이고, 이 세 가지만으로 어떤 복잡한 불 함수도 표현할 수 있기 때문입니다. 정말 그런지는 어떤 진리표든 회로로 만들기에서 확인하고, 여기서는 세 게이트를 하나씩 살펴봅시다.

엄마 아빠가 모두 좋은 AND 게이트

AND는 ‘그리고’를 의미합니다. 두 가지 조건이 모두 참일 때만 결과가 참이 됩니다. ‘엄마가 좋다 AND 아빠가 좋다’는 엄마 아빠가 모두 좋아야 참입니다.

A AND B
000
010
100
111

AND 게이트는 특정 조건들이 모두 충족되었는지 판단하는 데 주로 사용됩니다. 예를 들어, 비밀번호와 지문이 모두 맞아야 스마트폰 잠금이 해제되는 경우를 생각해볼 수 있습니다.

적어도 한 분은 좋은 OR 게이트

OR는 ‘또는’을 의미합니다. 두 가지 조건 중 하나라도 참이면 결과가 참이 됩니다.

A OR B
000
011
101
111

여러 가능한 조건들 중 하나만 만족해도 되는 상황을 판단하는 데 사용됩니다. 예를 들어, 집 앞문이나 뒷문 중 하나만 열려 있어도 환기가 되는 경우를 생각해볼 수 있습니다.

좋으면 싫고 싫으면 좋은 NOT 게이트

NOT는 ‘아니다’를 의미합니다. 입력된 비트의 상태를 반전시키는 논리입니다.

NOT A
01
10

어떤 상태를 반대로 뒤집거나 특정 조건이 아닌 경우를 판단할 때 사용됩니다. 예를 들어, 스마트폰이 잠겨 있지 않을(NOT) 때만 터치가 작동하는 경우를 생각해볼 수 있습니다.

논리 게이트의 물리적 구현

물리적인 내용이니 간단하게만 살펴봅시다. 논리 게이트 구현의 핵심은 전기 신호의 흐름을 제어하는 스위치를 만드는 것입니다. 이 스위치 역할을 하는 부품이 트랜지스터입니다. 트랜지스터는 특정 조건이 만족되면 전기가 흐르는 통로를 열고, 그렇지 않으면 막습니다. AND, OR, NOT 게이트는 이 트랜지스터를 특정 방식으로 연결해서 만들어집니다.

직진 판단 회로 만들기

이제 세 가지 게이트를 모두 배웠으니, 처음에 본 직진 판단을 실제 회로로 만들어 봅시다. 직진 = 초록불 ∧ ¬장애물이었습니다. 이를 게이트로 표현하면 장애물 신호를 NOT 게이트로 뒤집고, 그 결과를 초록불 신호와 함께 AND 게이트에 넣으면 됩니다.

NOT 장애물초록불 AND (NOT 장애물)
0010
0100
1011
1100

이를 회로로 표현하면 다음과 같습니다. 입력을 클릭해서 값을 바꿔봅시다.

위 진리표와 똑같이 작동합니다. 이처럼 AND, OR, NOT 게이트를 조합하면 진리표를 실제 회로로 구현할 수 있습니다.

이 예시는 직관적으로 게이트를 조합할 수 있었습니다. 하지만 모든 불 함수가 이렇게 쉽게 분해되지는 않습니다. 임의의 진리표를 AND, OR, NOT으로 체계적으로 변환하는 방법은 어떤 진리표든 회로로 만들기에서 다룹니다.