과학·기술
논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR)

논리게이트는 무엇을 하는 장치일까
논리게이트는 0과 1처럼 두 가지 상태로 표현한 입력을 받아 미리 약속된 규칙에 따라 하나의 출력을 내보내는 디지털 회로의 기본 단위입니다. 여기서 0은 보통 꺼짐, 거짓, 낮은 전압을 뜻하고 1은 켜짐, 참, 높은 전압을 뜻하지만 실제 상황에서는 어떤 두 상태를 구분하기 위한 기호라고 이해하는 편이 정확합니다. 스위치 두 개의 상태를 보고 전등을 켤지 정하는 회로, 비밀번호의 조건을 모두 만족했는지 검사하는 프로그램, 컴퓨터 안에서 숫자를 계산하는 회로도 결국은 이런 작은 판단을 매우 빠르게 반복합니다. 논리게이트를 배울 때 기호의 모양만 외우면 서로 비슷해 보여 금방 헷갈리므로, 먼저 입력의 개수와 출력이 1이 되는 조건을 말로 설명해 보는 습관이 도움이 됩니다.
게이트의 규칙을 정리한 표를 진리표라고 합니다. 입력이 하나면 가능한 경우가 0과 1의 두 가지이고, 입력이 두 개면 00, 01, 10, 11의 네 가지가 됩니다. 진리표를 왼쪽에서 오른쪽으로 읽으면서 각 줄의 출력만 확인하면 복잡한 회로 그림 없이도 게이트의 성질을 검증할 수 있습니다. A와 B는 입력 이름일 뿐이라서 특별한 뜻을 갖지 않으며, Y나 Q는 결과를 표시하는 이름으로 자주 씁니다. 회로도에서 선이 갈라지거나 합쳐져도 중요한 것은 신호가 어느 게이트의 입력으로 들어가고, 그 게이트가 어떤 규칙으로 결과를 바꾸는지입니다. 따라서 논리게이트는 전자 부품의 이름이면서 동시에 조건문을 가장 간결하게 표현하는 언어라고 볼 수 있습니다.
AND 게이트: 모든 조건이 참일 때만 1
AND 게이트는 두 입력이 모두 1일 때에만 출력이 1이 되는 규칙입니다. A와 B가 각각 0과 0이면 결과는 0이고, 0과 1 또는 1과 0이어도 결과는 0이며, 1과 1일 때만 결과가 1입니다. 말로 바꾸면 ‘A이고 B이다’라는 뜻이므로 두 조건을 동시에 만족해야 하는 상황에 잘 어울립니다. 예를 들어 안전장치가 작동하려면 보호문이 닫혀 있어야 하고 시작 버튼도 눌려 있어야 한다고 해 봅시다. 두 신호가 모두 들어온 경우에만 기계가 움직이도록 만들면 한 조건이 빠졌을 때의 위험을 줄일 수 있습니다. 컴퓨터 프로그램에서 로그인 여부와 권한 여부를 함께 확인하는 판단도 AND와 같은 구조로 생각할 수 있습니다.
AND 기호는 왼쪽이 평평하고 오른쪽이 둥근 모양으로 그리는 경우가 많습니다. 입력선은 보통 왼쪽에서 두 개가 들어오고 출력선은 오른쪽으로 하나가 나갑니다. 진리표를 암기할 때는 네 줄 가운데 마지막 줄만 1이라고 기억하면 빠르지만, 그보다 ‘모두 만족’이라는 문장을 붙여 두는 편이 응용에 강합니다. 입력이 세 개인 AND라면 A, B, C가 전부 1일 때만 출력이 1이 됩니다. 이처럼 입력이 늘어날수록 조건은 더 엄격해집니다. 여러 센서가 동시에 정상인지 확인하는 회로에서 AND가 자주 쓰이는 이유도 바로 이 엄격한 통과 기준 때문입니다.

OR 게이트와 NOT 게이트: 하나라도 참, 그리고 반대
OR 게이트는 입력 가운데 하나 이상이 1이면 출력이 1이 됩니다. 두 입력이 모두 0일 때만 0이고, 01, 10, 11에서는 모두 1을 내보냅니다. 일상 언어의 ‘또는’은 때때로 둘 중 하나만 고르라는 의미로 쓰이지만, 논리회로의 OR은 둘 다 1인 경우도 받아들인다는 점이 핵심입니다. 비상벨이 화재 센서 또는 가스 센서 중 하나에서 위험 신호를 받으면 울리게 하는 예를 떠올리면 이해하기 쉽습니다. 어느 한쪽의 경고만으로도 대응을 시작해야 하므로 조건을 넓게 묶는 OR이 알맞습니다. 여러 경로 가운데 하나라도 열려 있으면 통과시키는 판단도 OR의 전형적인 활용입니다.
NOT 게이트는 입력이 하나이고 출력을 반대로 뒤집습니다. 입력이 0이면 출력은 1이 되고, 입력이 1이면 출력은 0이 됩니다. 회로 기호의 끝에 붙은 작은 원은 보통 부정 또는 반전을 뜻하므로 NOT뿐 아니라 NAND, NOR, XNOR에서도 중요한 단서가 됩니다. ‘문이 열려 있지 않다’, ‘신호가 들어오지 않았다’처럼 어떤 상태의 반대를 판단해야 할 때 NOT이 필요합니다. 다만 0과 1을 실제 전압으로 구현하는 회로에서는 신호가 바뀌는 데 아주 짧은 시간이 걸릴 수 있으므로, 여러 NOT을 연속으로 연결한 복잡한 회로는 타이밍까지 고려해야 합니다. 기초 단계에서는 먼저 입력과 출력이 항상 반대라는 한 문장을 확실히 잡으면 충분합니다.
NAND와 NOR: 기본 규칙을 뒤집은 게이트
NAND는 AND의 결과를 NOT으로 한 번 더 뒤집은 게이트입니다. 따라서 두 입력이 모두 1일 때만 출력이 0이고, 나머지 세 경우에는 1이 됩니다. 이름은 NOT AND를 줄인 말이며, AND 기호의 출력 쪽에 작은 원이 붙은 모양으로 그립니다. 처음에는 AND와 NAND의 차이가 작아 보이지만, 출력이 1이 되는 경우가 세 줄이라는 사실을 진리표에서 직접 확인하면 성격이 전혀 다르다는 것을 알 수 있습니다. NAND는 몇 개만 조합해도 NOT, AND, OR 같은 다른 논리를 만들 수 있어서 실제 디지털 설계에서 특히 중요한 기본 부품으로 취급됩니다. 어떤 조건이 모두 성립한 경우만 막고, 그 외에는 허용해야 하는 판단을 표현할 때도 자연스럽게 사용할 수 있습니다.
NOR는 OR의 결과를 반전한 게이트입니다. 두 입력이 모두 0일 때만 출력이 1이고, 어느 하나라도 1이면 출력은 0입니다. 이름은 NOT OR에서 왔으며 OR 기호 끝의 작은 원으로 알아볼 수 있습니다. ‘아무 경고도 들어오지 않았을 때만 정상 신호를 낸다’는 식의 조건이 NOR와 닮았습니다. NOR 역시 다른 게이트를 구성할 수 있는 보편 게이트라는 점에서 NAND와 짝을 이룹니다. 회로를 읽을 때 NAND와 NOR를 단순히 부정 기호가 붙은 변형으로만 보지 말고, 각각 어느 한 줄 또는 어느 세 줄에서 1이 나오는지 비교해 보세요. 그 차이를 알면 복잡한 조합논리도 출력부터 거꾸로 추적하기 쉬워집니다.

XOR과 XNOR: 같음과 다름을 판정하는 비교 규칙
XOR은 exclusive OR, 즉 배타적 OR의 약자입니다. 두 입력이 서로 다를 때만 1을 출력하므로 01과 10에서 1이 나오고 00과 11에서는 0이 나옵니다. 일반 OR과 달리 둘 다 1인 11에서 0이 되는 것이 가장 중요한 차이입니다. 스위치 두 개 중 정확히 하나만 켜졌을 때 전등을 켜는 회로, 두 비트가 다른지 검사하는 회로, 덧셈에서 올림을 제외한 합 비트를 구하는 회로는 XOR의 성질을 활용합니다. XOR 기호는 OR 기호 앞에 곡선이 하나 더 붙은 모습으로 많이 나타나므로, OR과 비교해서 보면 구별하기 편합니다. ‘다르면 1’이라는 짧은 문장을 진리표의 네 경우와 연결해 두면 기억이 오래 갑니다.
XNOR은 XOR의 출력을 반전한 게이트입니다. 두 입력이 같을 때 1이 나오므로 00과 11에서 1이고, 01과 10에서는 0입니다. 두 신호가 일치하는지 확인하는 비교기, 전송한 비트와 받은 비트가 같은지 검사하는 단순한 검증 회로, 설정값이 현재 상태와 맞는지 보는 장치에 잘 어울립니다. XNOR 기호는 XOR의 출력에 작은 원이 붙은 형태입니다. XOR과 XNOR을 한 쌍으로 외우면 편합니다. XOR은 다름을 발견하면 1, XNOR은 같음을 발견하면 1이라는 식입니다. 단, 실제 시스템의 오류 검사는 여러 비트와 시간 조건을 함께 다루므로 단일 XNOR 하나만으로 완성되지는 않지만, 비교의 출발점이 되는 원리는 이 게이트에 담겨 있습니다.
진리표를 실수 없이 읽는 순서
두 입력 게이트를 공부할 때는 먼저 입력 조합을 00, 01, 10, 11 순서로 적고, 각 줄에서 규칙을 말로 적용하는 방법이 가장 안전합니다. AND라면 ‘둘 다 1인가’, OR라면 ‘하나라도 1인가’, NAND라면 ‘둘 다 1인 상태가 아닌가’처럼 질문을 만들어 보세요. XOR은 ‘두 값이 다른가’, XNOR은 ‘두 값이 같은가’라고 묻는 편이 빠릅니다. 이 과정을 생략하고 출력 열만 외우면 OR과 XOR, NAND와 NOR를 바꿔 적는 실수가 생기기 쉽습니다. 특히 입력의 순서는 01과 10이 바뀌어도 AND, OR, XOR, XNOR의 출력은 같지만, 회로 전체에서는 각 신호가 맡은 의미가 다를 수 있으므로 입력 이름을 함부로 바꾸면 안 됩니다.
한 입력 게이트인 NOT은 표가 두 줄뿐이지만, 여러 게이트를 연결하면 중간 결과를 별도의 이름으로 적는 습관이 중요합니다. 예를 들어 Y가 NOT(AND(A,B))라면 먼저 C=AND(A,B)를 계산하고, 다음에 Y=NOT(C)를 계산합니다. 이 식은 NAND와 같은 결과를 줍니다. 괄호와 중간 변수를 이용하면 긴 회로도도 작은 단계로 나눌 수 있습니다. 연습할 때는 임의의 입력 하나를 골라 회로의 선을 따라가며 각 지점에 0 또는 1을 표시해 보세요. 그림, 진리표, 문장 표현을 오가며 확인하면 기호를 암기하는 공부에서 규칙을 이해하는 공부로 바뀝니다.
논리게이트가 컴퓨터와 생활 속에서 만나는 곳
스마트폰이나 컴퓨터의 프로세서는 수많은 논리게이트를 조합해 계산, 비교, 기억장치 제어를 수행합니다. 숫자를 더할 때 한 자리의 합을 만들고 다음 자리로 올림을 보내는 회로에는 XOR과 AND가 함께 쓰일 수 있으며, 특정 명령을 실행할지 결정하는 제어 회로에는 여러 AND와 OR이 연결됩니다. 자동문, 엘리베이터, 자동차의 안전장치, 가전제품의 예약 기능처럼 조건을 확인하는 장치도 논리적 판단을 포함합니다. 다만 실제 제품은 센서의 오차, 시간 지연, 전원 상태, 안전 규정까지 함께 고려하므로 교과서의 단일 게이트 그림보다 훨씬 복잡합니다. 그럼에도 기본 규칙을 알면 장치가 왜 특정 조건에서만 반응하는지 추론하는 출발점을 얻을 수 있습니다.
프로그래밍에서도 AND, OR, NOT이라는 이름이나 비슷한 연산자가 조건문에 등장합니다. 예를 들어 로그인했고 관리자 권한도 있는지 확인하는 판단은 AND와 닮았고, 알림이 긴급하거나 사용자가 구독했는지 확인하는 판단은 OR과 닮았습니다. 값이 같은지 다른지 비교하는 연산은 XNOR 또는 XOR의 생각과 연결해 볼 수 있습니다. 다만 프로그래밍 언어의 참과 거짓, 비트 연산, 짧은 평가 규칙은 전자회로의 신호와 세부 동작이 다를 수 있으므로 문법을 그대로 회로 기호에 대응시키지는 않는 편이 좋습니다. 공통점은 복잡한 결정을 작은 조건의 조합으로 나누어 다룬다는 데 있습니다.
핵심 정리와 다음 학습 방향
AND는 모두 1일 때 1, OR은 하나 이상 1일 때 1, NOT은 입력을 반대로 바꾼다는 세 문장이 기본입니다. NAND는 AND의 반대라서 모두 1일 때만 0이고, NOR는 OR의 반대라서 모두 0일 때만 1입니다. XOR은 서로 다를 때 1, XNOR은 서로 같을 때 1이라는 비교 규칙을 기억하면 일곱 게이트의 진리표를 스스로 다시 만들 수 있습니다. 이 규칙을 말로 설명한 뒤 표로 확인하고, 마지막으로 기호를 연결해 보는 순서가 가장 탄탄합니다. 단순 암기보다 각 게이트가 ‘어떤 경우를 통과시키고 어떤 경우를 막는가’를 이해하는 것이 중요합니다.
다음 단계에서는 두 개 이상의 게이트를 연결한 조합논리 회로를 진리표로 풀어 보거나, 반가산기와 전가산기처럼 실제 계산을 만드는 회로를 살펴보면 좋습니다. 드모르간의 법칙을 배우면 NAND와 NOR만으로 다른 논리를 구성할 수 있는 이유도 더 분명해집니다. 처음에는 입력 조합 네 개를 모두 적는 일이 느리게 느껴질 수 있지만, 그 꼼꼼함이 회로 설계와 디버깅에서 큰 오류를 막아 줍니다. 논리게이트는 디지털 세계의 아주 작은 문법이므로, 한 가지씩 출력 규칙을 확실히 익히면 더 큰 전자회로와 컴퓨터 구조도 훨씬 친숙하게 읽을 수 있습니다.
학습을 점검하는 간단한 방법도 있습니다. 종이에 A와 B의 네 가지 조합을 적고, 먼저 AND와 OR의 출력 열을 채운 다음 NOT을 이용해 NAND와 NOR의 열을 만들어 보세요. 이어서 두 입력이 다른 줄에 표시를 하여 XOR의 출력 열을 완성하고, 그 표시를 뒤집으면 XNOR이 됩니다. 답을 외워서 적기보다 각 줄에서 왜 0 또는 1이 되는지 짧은 이유를 함께 써 보는 것이 좋습니다. 예를 들어 A=1, B=0에서 AND가 0인 까닭은 두 조건이 모두 참이 아니기 때문이고, XOR이 1인 까닭은 두 값이 서로 다르기 때문입니다. 이런 설명을 할 수 있으면 기호가 달라지거나 입력 수가 늘어난 문제에서도 규칙을 적용할 수 있습니다.
회로도를 실제로 해석할 때는 신호가 흐르는 방향을 정하고, 각 게이트의 출력에 임시 이름을 붙이는 방식이 유용합니다. 첫 번째 AND의 결과를 P, 다음 NOT의 결과를 Q처럼 기록하면 선이 교차하는 복잡한 그림도 한 단계씩 분해할 수 있습니다. 동시에 바뀌는 입력을 상상할 때는 이상적인 진리표와 실제 회로의 차이도 기억해야 합니다. 진리표는 입력이 안정된 뒤의 결과를 보여 주지만, 물리적인 부품과 배선에서는 아주 짧은 지연이 생깁니다. 고급 설계에서는 그 지연 때문에 순간적인 오동작이 나타나지 않도록 회로 구조를 검토합니다. 그러나 기초 문제에서는 먼저 안정된 입력 조합에서의 출력 규칙을 정확히 계산하는 일이 가장 우선입니다.
논리게이트의 이름을 한글로 읽는 법도 함께 익혀 두면 자료를 찾을 때 편합니다. AND는 앤드 또는 논리곱, OR은 오어 또는 논리합, NOT은 낫 또는 부정으로 소개되기도 합니다. NAND와 NOR는 각각 앤드의 부정, 오어의 부정으로 이해할 수 있고, XOR은 배타적 논리합, XNOR은 동치 또는 일치 비교 논리로 설명하는 자료가 많습니다. 용어가 조금 달라도 진리표의 출력 규칙이 같다면 같은 개념을 가리킵니다. 교재마다 사용하는 기호와 표기법이 다를 수 있으므로, 낯선 이름을 만났을 때는 반드시 입력 조합과 출력 열을 확인하는 습관을 들이세요. 이 확인 절차가 가장 믿을 만한 공통 언어입니다.
마지막으로 논리게이트는 정답을 한 번에 맞히는 암기 과목이 아니라, 작은 조건을 정확히 조합하는 훈련이라는 점을 기억하면 좋습니다. 한 게이트의 진리표를 자신 있게 만들 수 있다면 그 결과를 다음 게이트의 입력으로 넣어 더 큰 회로를 계산할 수 있습니다. 반대로 결과가 예상과 다르면 입력값, 부정 원, 게이트 종류, 중간 출력의 순서로 되짚어 보면 오류를 찾을 수 있습니다. 이러한 태도는 전자회로뿐 아니라 프로그램의 조건문, 데이터 필터, 자동화 규칙을 설계할 때도 그대로 이어집니다. 기본 게이트 일곱 가지를 출발점으로 삼아, 규칙을 말로 설명하고 표로 검증하는 연습을 반복해 보세요.
실습 환경이 있다면 가상 회로 도구에서 스위치 두 개와 LED 하나를 놓고 게이트를 하나씩 바꿔 보는 활동도 효과적입니다. A와 B를 00에서 11까지 차례로 전환하면서 LED가 켜지는 순간을 기록하면 진리표의 숫자가 눈에 보이는 결과와 연결됩니다. AND를 NAND로 바꾸었을 때 마지막 조합의 LED가 꺼지고, OR를 NOR로 바꾸었을 때 첫 조합만 켜지는 모습을 관찰하면 부정 원의 의미가 훨씬 선명해집니다. XOR과 XNOR은 두 스위치가 같은지 다른지를 판정하는 장면을 만들기 좋습니다. 실습 뒤에는 관찰한 네 가지 결과를 다시 표로 적어 보며, 화면의 모양보다 논리 규칙을 중심으로 정리하세요.
문제를 풀 때 자주 생기는 오해도 피해야 합니다. OR을 ‘반드시 하나만 참’이라고 읽으면 11에서의 출력이 틀리고, XOR을 일반 OR과 같다고 생각하면 역시 같은 줄에서 실수합니다. NAND와 NOR는 출력의 작은 원을 놓쳐 원래 게이트와 동일하게 계산하기 쉽습니다. 또한 0과 1을 좋고 나쁨, 허용과 금지처럼 고정된 의미로 받아들이면 상황에 따라 혼란이 생깁니다. 0과 1은 회로가 구분하는 두 상태의 약속일 뿐이며, 어느 상태가 실제로 안전하거나 바람직한지는 설계 목적이 정합니다. 그래서 회로의 이름, 입력의 의미, 출력의 의미를 따로 적어 두면 논리식과 실제 기능을 혼동하지 않을 수 있습니다.