과학·기술

논리게이트: XOR 게이트

2026-10-14

XOR 게이트의 입력 스위치와 진리표를 설명한 한국어 정보카드
XOR은 두 입력이 서로 다를 때만 1을 출력하는 비교 규칙입니다.

XOR 게이트는 무엇을 판단할까

XOR 게이트는 두 입력을 비교해 서로 다를 때만 1을 내보내는 논리게이트입니다. 이름은 exclusive OR의 약자이며 한국어로는 배타적 논리합이라고도 부릅니다. A와 B가 둘 다 0이거나 둘 다 1이면 결과는 0이고, 한쪽만 1인 01과 10에서는 결과가 1이 됩니다. 여기서 0과 1은 꺼짐과 켜짐, 거짓과 참, 낮은 전압과 높은 전압처럼 서로 구별되는 두 상태를 나타내는 기호입니다. 중요한 점은 값 자체의 좋고 나쁨이 아니라 두 값이 같은지 다른지를 가려내는 데 있습니다. 그래서 XOR은 두 조건 가운데 정확히 하나가 성립했는지, 두 신호가 불일치하는지 확인해야 할 때 특히 유용합니다.

처음에는 OR 게이트와 XOR 게이트가 비슷해 보일 수 있습니다. 둘 다 01과 10에서 1을 출력하기 때문입니다. 그러나 OR은 둘 다 1인 11에서도 1을 내보내는 반면, XOR은 두 입력이 같다는 이유로 0을 출력합니다. 일상 언어의 ‘또는’은 문맥에 따라 하나만 고르라는 뜻으로 쓰이기도 하지만, 회로에서 OR은 하나 이상이 1이면 통과시키는 규칙입니다. XOR은 그보다 좁은 조건을 적용해 ‘하나만 1인가’를 묻습니다. 이 한 줄의 차이를 진리표 네 줄에 대입해 보면 두 게이트를 혼동할 일이 크게 줄어듭니다.

회로도에서 XOR 기호는 OR 기호의 입력 쪽에 곡선 하나가 더 붙은 형태로 그려지는 경우가 많습니다. 입력선 두 개는 보통 왼쪽에서 들어오고 결과는 오른쪽으로 나갑니다. 기호만 외우기보다 출력 규칙을 문장으로 읽는 편이 안전합니다. 예를 들어 A가 1이고 B가 0이면 ‘둘이 다르다’가 참이므로 결과는 1입니다. 반대로 A와 B가 모두 1이면 ‘둘이 다르다’가 거짓이어서 결과는 0입니다. 이처럼 각 조합에서 질문을 한 번씩 던져 보면 기호와 숫자가 자연스럽게 연결됩니다.

진리표로 XOR 출력 규칙 읽기

두 입력 게이트의 진리표는 가능한 입력 조합 네 가지를 빠짐없이 적은 표입니다. XOR의 첫 줄은 A=0, B=0이며 두 값이 같으므로 출력은 0입니다. 둘째 줄 A=0, B=1에서는 서로 달라져 출력이 1이 됩니다. 셋째 줄 A=1, B=0도 마찬가지로 다르기 때문에 1입니다. 마지막 줄 A=1, B=1은 둘 다 같은 상태라서 다시 0이 됩니다. 따라서 XOR의 출력 열은 0, 1, 1, 0 순서가 됩니다. 표를 이 순서로 직접 써 보는 활동은 암기보다 확실한 학습 방법이며, 나중에 더 복잡한 회로를 점검할 때도 기본 도구가 됩니다.

XOR을 빠르게 기억하는 방법은 네 가지 줄을 통째로 외우기보다 ‘다르면 1, 같으면 0’이라는 규칙을 먼저 붙잡는 것입니다. 입력 00과 11은 같은 쌍이므로 0이라는 공통점이 있고, 01과 10은 다른 쌍이므로 1이라는 공통점이 있습니다. 입력 순서가 바뀌어도 XOR의 결과는 변하지 않습니다. 다만 실제 회로에서 A와 B가 각각 어떤 센서나 버튼을 뜻하는지는 달라질 수 있으므로, 계산은 같더라도 입력 이름을 함부로 바꾸어 해석해서는 안 됩니다. 진리표는 숫자의 표이면서 동시에 각 신호가 수행하는 역할을 분명히 하는 약속입니다.

XOR과 반대되는 비교 규칙으로 XNOR도 알아두면 좋습니다. XNOR은 XOR 결과를 한 번 뒤집은 게이트라서 입력이 같을 때 1, 다를 때 0을 냅니다. 두 값이 일치하는지 검사하려면 XNOR이 직관적이고, 불일치 여부를 찾으려면 XOR이 직관적입니다. 예를 들어 설정값과 현재 상태가 같은지를 보려면 XNOR 관점이 편하고, 두 데이터가 달라졌는지를 감지하려면 XOR 관점이 편합니다. 두 게이트를 짝으로 비교하면 출력의 작은 반전 표시가 무엇을 바꾸는지도 더 선명하게 이해할 수 있습니다.

입력이 같을 때와 다를 때 XOR 출력이 달라지는 모습을 보여 주는 한국어 정보카드
입력이 00 또는 11이면 0, 01 또는 10이면 1이 되는 이유를 그림으로 확인할 수 있습니다.

XOR과 AND·OR의 차이를 구분하는 법

AND 게이트는 두 입력이 모두 1일 때만 1을 출력합니다. 그래서 11 한 줄만 1이고 나머지는 0입니다. OR 게이트는 하나 이상이 1이면 1을 출력하므로 00에서만 0이고 나머지 세 줄은 1입니다. XOR은 그 중간처럼 보이지만 단순히 중간 조건이 아닙니다. XOR은 정확히 한 입력만 1인 두 줄에서만 1을 냅니다. 세 게이트의 성격을 말로 정리하면 AND는 ‘모두 만족’, OR은 ‘하나 이상 만족’, XOR은 ‘정확히 하나만 만족’입니다. 문제를 만났을 때 먼저 이 문장을 떠올리고 표를 채우면 출력 열을 잘못 옮기는 실수를 예방할 수 있습니다.

스위치 두 개와 전등 하나를 생각하면 차이가 더 잘 보입니다. AND 회로는 스위치 두 개가 모두 켜져야 전등이 켜집니다. OR 회로는 둘 중 하나만 켜져도, 둘 다 켜도 전등이 켜집니다. XOR 회로는 두 스위치의 상태가 서로 다를 때만 전등이 켜집니다. 따라서 한 스위치는 켜고 다른 스위치는 끄거나, 반대로 바꾸었을 때 결과가 바뀝니다. 이런 동작은 복도 양 끝에서 같은 조명을 조절하는 양방향 스위치의 직관적 설명과 닮아 있습니다. 실제 배선 방식은 제품과 안전 규격에 따라 달라질 수 있지만, 상태가 다를 때 켜진다는 논리적 원리는 XOR로 표현할 수 있습니다.

학습할 때 OR을 ‘둘 중 하나만 참’이라고 오해하는 경우가 많습니다. 그 표현은 XOR에는 어울리지만 OR에는 맞지 않습니다. OR은 11도 참으로 받아들인다는 점이 핵심입니다. 반대로 XOR을 일반 OR과 같은 뜻으로 처리하면 11에서 결과를 1로 적는 오류가 생깁니다. 한 줄만 비교해도 구별법을 만들 수 있습니다. A=1, B=1일 때 AND는 1, OR은 1, XOR은 0입니다. 이 조합을 점검용 기준으로 사용하면 세 게이트의 출력 규칙을 빠르게 다시 확인할 수 있습니다.

이진 덧셈에서 XOR이 맡는 역할

컴퓨터가 이진수 한 자리 두 개를 더할 때 XOR은 합의 가장 낮은 자리를 계산하는 데 쓰입니다. 0과 0을 더하면 합은 0이고, 0과 1 또는 1과 0을 더하면 합은 1입니다. 1과 1을 더하면 십진수로 2가 되어 이진수 10이 되므로 현재 자리의 합은 0이고 다음 자리로 올림이 전달됩니다. 현재 자리의 합만 보면 XOR의 출력 0, 1, 1, 0과 정확히 같습니다. 한편 올림은 두 입력이 모두 1일 때 발생하므로 AND 게이트의 출력과 같습니다. 이 두 규칙을 함께 사용하면 두 비트를 더하는 반가산기의 기본 구조를 이해할 수 있습니다.

반가산기는 이전 자리에서 넘어오는 올림을 고려하지 않는 가장 단순한 덧셈 회로입니다. 실제 여러 자리 덧셈에서는 이전 자리의 올림까지 함께 계산해야 하므로 전가산기라는 구성이 필요합니다. 전가산기에서도 XOR은 여전히 중요한 역할을 합니다. 먼저 두 입력을 XOR으로 비교하고, 그 결과와 이전 올림을 다시 XOR으로 비교해 합 비트를 얻습니다. 올림 신호는 여러 AND와 OR의 조합으로 결정됩니다. 복잡해 보이지만 각 단계는 ‘두 값이 다른가’와 ‘둘 다 1인가’라는 작은 질문으로 나뉘어 있습니다. 디지털 계산이 거대한 숫자도 처리할 수 있는 이유는 이 단순한 규칙을 매우 빠르게 반복하기 때문입니다.

이진 덧셈을 연습할 때는 A와 B를 각각 한 비트로 적고, XOR 출력은 합, AND 출력은 올림이라고 표시해 보세요. 예를 들어 A=1, B=1이면 XOR은 0, AND는 1이므로 결과는 현재 자리 0과 다음 자리 올림 1로 읽을 수 있습니다. A=1, B=0이면 XOR은 1, AND는 0이라서 그대로 1이 남습니다. 계산 과정을 표로 적으면 회로도에서 선이 어디로 이어지는지 이해하기 쉬워집니다. 단순한 1비트 예제가 익숙해지면 세 입력을 다루는 전가산기와 여러 자리 이진 덧셈도 단계적으로 접근할 수 있습니다.

이진 덧셈과 오류 검출과 양방향 스위치의 XOR 활용을 보여 주는 한국어 정보카드
XOR의 다름 판정은 계산 회로와 통신 점검, 스위치 제어에 이어집니다.

오류 검출과 데이터 비교에 쓰는 XOR

XOR은 데이터 두 개가 같은지 다른지를 찾는 작업에도 잘 맞습니다. 같은 위치의 두 비트를 XOR하면 값이 같을 때는 0, 다를 때는 1이 나옵니다. 여러 비트를 한 자리씩 비교해 결과 중 하나라도 1이 있으면 어디선가 차이가 생겼다는 뜻이 됩니다. 파일이나 통신 데이터가 전송 전후에 달라졌는지 빠르게 확인하는 원리는 이런 비트 비교에서 출발합니다. 물론 실제 보안 검증이나 무결성 확인에는 더 강한 해시와 오류 정정 방식이 사용될 수 있지만, XOR은 차이를 드러내는 가장 기초적인 논리 연산으로 널리 쓰입니다.

패리티 검사도 XOR의 대표적인 활용입니다. 여러 데이터 비트를 XOR하여 짝수 또는 홀수 개의 1이 있는지 요약하는 패리티 비트를 만들 수 있습니다. 전송하는 쪽은 정한 규칙에 맞춰 패리티를 붙이고, 받는 쪽은 받은 비트들을 다시 XOR하여 기대한 결과와 같은지 확인합니다. 결과가 맞지 않으면 전송 중 일부 비트가 바뀌었을 가능성을 알 수 있습니다. 다만 패리티는 모든 오류를 찾아내거나 어느 비트가 틀렸는지 고쳐 주는 방법은 아닙니다. 여러 비트가 동시에 바뀌는 경우를 놓칠 수 있으므로, 실제 시스템에서는 목적에 맞는 더 정교한 검증 방법과 함께 사용합니다.

데이터 비교에서 XOR을 사용할 때는 0이 나왔다고 해서 모든 상황에서 완전히 안전하다고 단정하면 안 됩니다. 무엇을 어떤 순서로 묶어 계산했는지, 전송 규칙이 무엇인지, 오류 모델이 어떤지에 따라 검사의 의미가 달라집니다. 그러나 두 신호가 다른지 확인한다는 핵심 역할은 변하지 않습니다. 비교 대상의 각 자리를 XOR으로 통과시키고 결과를 해석하는 흐름을 이해하면, 프로그래밍의 비트 연산과 전자회로의 비교기 사이에 있는 공통 원리도 쉽게 발견할 수 있습니다.

XOR 게이트를 정확히 익히는 연습 순서

가장 먼저 A와 B의 네 조합 00, 01, 10, 11을 종이에 적어 보세요. 각 줄에서 두 숫자가 같은지 다른지를 말로 판단한 뒤 XOR 출력 열을 채우면 됩니다. 답을 쓴 다음에는 왜 그런 값이 나왔는지 한 줄씩 설명해 보세요. 00은 둘 다 꺼진 상태라 같아서 0, 01은 상태가 달라서 1, 10도 달라서 1, 11은 둘 다 켜져 같아서 0이라고 읽을 수 있습니다. 이 설명이 자연스럽게 나오면 진리표를 외운 것이 아니라 규칙을 이해한 것입니다. 다음으로 같은 입력에 AND와 OR의 출력도 나란히 적어 세 결과가 어느 줄에서 갈라지는지 비교해 보세요.

회로도가 길어지면 중간 결과에 이름을 붙이는 습관이 도움이 됩니다. 예를 들어 첫 XOR의 출력을 P라고 적고, P가 다음 게이트에 들어간다면 그다음 출력은 Q처럼 기록합니다. 선이 교차하는 그림을 한 번에 보려 하지 말고 왼쪽에서 오른쪽으로 작은 계산을 끝내는 방식입니다. 부정 표시가 붙은 XNOR이나 NAND를 만났을 때도 먼저 원래 게이트의 결과를 구한 뒤 마지막에 반대로 바꾸면 됩니다. 이런 분해 과정은 시험 문제뿐 아니라 실제 회로를 디버깅할 때도 신호의 흐름을 추적하는 안정적인 방법입니다.

마지막으로 XOR은 입력이 안정된 뒤의 논리적 결과를 나타낸다는 점을 기억해 두면 좋습니다. 교과서의 진리표는 이상적인 상태를 간결하게 보여 주지만, 실제 전자 부품과 배선에는 아주 짧은 전달 지연이 있습니다. 여러 게이트가 연결된 고속 회로에서는 입력 변화 순간에 예상하지 못한 짧은 신호가 생기지 않도록 타이밍을 검토하기도 합니다. 기초 단계에서는 먼저 네 조합의 출력 규칙을 정확히 계산하는 데 집중하면 충분합니다. 그 기초가 잡히면 반가산기, 비교기, 오류 검출, 더 큰 조합논리 회로까지 한 단계씩 확장해 갈 수 있습니다.

생활 속 비유로 이해하는 XOR의 조건

XOR을 이해할 때 ‘두 사람이 서로 다른 선택을 했는가’를 묻는 상황을 떠올리면 도움이 됩니다. 두 사람이 모두 찬성하거나 모두 반대했다면 같은 선택이므로 XOR 결과는 0입니다. 한 사람만 찬성했다면 선택이 갈리므로 결과는 1입니다. 이 비유는 누가 옳은지를 판단하는 것이 아니라 두 상태가 일치하는지 확인하는 과정이라는 점을 보여 줍니다. 전등 스위치, 센서 두 개, 데이터 비트 두 개처럼 대상은 달라도 입력을 비교한다는 구조는 같습니다. 다만 실제 장치에서는 신호의 의미와 안전 조건을 따로 확인해야 하므로, 비유를 회로의 모든 세부 동작과 동일시하지 않는 태도도 필요합니다.

문을 열 수 있는 권한을 예로 들면 XOR과 AND, OR의 구분이 더 뚜렷해집니다. ‘카드와 비밀번호가 모두 맞아야 열림’은 AND와 가깝습니다. ‘카드 또는 비밀번호 중 하나만 맞아도 열림’은 OR과 비슷하지만 보안상 적절하지 않을 수 있습니다. ‘카드와 비밀번호 상태가 서로 다를 때만 알림’은 XOR식 비교입니다. 실제 보안 시스템은 이런 단일 게이트 하나로 끝나지 않고 시간 제한, 횟수 제한, 사용자 권한, 기록 저장 같은 조건을 더합니다. 그럼에도 복잡한 규칙을 읽을 때 각 조건이 모두 필요한지, 하나면 충분한지, 정확히 하나만 성립해야 하는지를 나누어 생각하면 설계 의도를 파악하기 쉬워집니다.

프로그래밍에서도 XOR이라는 이름의 연산을 만날 수 있습니다. 비트 단위 XOR은 정수의 각 이진 자리에서 서로 다른 비트를 1로 만드는 계산입니다. 반면 어떤 언어에서는 참과 거짓 두 값에 대한 논리 XOR을 별도로 제공하거나, 비교식과 조건문을 조합해 같은 결과를 표현합니다. 비트 연산과 논리 연산은 모두 ‘다름’을 다루지만 입력의 단위와 사용 목적이 다를 수 있습니다. 코드를 읽을 때는 연산자가 숫자의 각 비트에 적용되는지, 조건식 전체의 참·거짓에 적용되는지 확인해야 합니다. 이 구분을 해 두면 회로의 XOR과 소프트웨어의 XOR을 자연스럽게 연결하면서도 서로 다른 문법을 혼동하지 않게 됩니다.

XOR의 또 다른 성질은 같은 값으로 두 번 연산하면 원래 값으로 돌아갈 수 있다는 점입니다. 어떤 비트 X에 같은 키 K를 XOR한 뒤 다시 K를 XOR하면 X가 복원됩니다. 이는 XOR의 결과에서 같은 항끼리 상쇄되는 성질과 연결됩니다. 이 특성은 데이터 변환과 간단한 마스킹 원리를 설명할 때 자주 언급됩니다. 하지만 이 성질만으로 안전한 암호 체계를 만들 수 있다고 생각해서는 안 됩니다. 키를 재사용하거나 관리 방식이 약하면 정보가 노출될 수 있으므로, 실제 보안은 검증된 알고리즘과 올바른 키 관리 절차를 따라야 합니다. 기초 학습에서는 XOR이 가역적인 비트 연산이라는 사실을 이해하는 데 초점을 두면 충분합니다.

학습을 마무리할 때는 다음 세 질문으로 스스로 점검해 보세요. 첫째, 11에서 XOR이 왜 0인지 말로 설명할 수 있는가입니다. 둘째, OR과 XOR이 11에서 어떻게 다른지 표 없이 답할 수 있는가입니다. 셋째, 이진 덧셈에서 XOR이 합 비트에, AND가 올림 비트에 연결되는 이유를 예로 들 수 있는가입니다. 세 질문에 답할 수 있다면 XOR의 핵심은 이미 잡힌 셈입니다. 이후에는 XNOR 비교기, 반가산기, 전가산기, 패리티 검사처럼 한 단계 확장된 주제를 진리표와 회로도로 함께 살펴보면 지식이 단단해집니다.

문제를 풀다가 답이 예상과 다르면 입력 조합부터 차례로 되짚는 것이 좋습니다. 먼저 A와 B에 실제로 어떤 값이 들어왔는지 확인하고, 다음으로 게이트 기호가 XOR인지 OR인지 살핍니다. XOR 기호 앞의 추가 곡선을 놓치거나 출력의 반전 원을 빠뜨리면 전혀 다른 결과가 나올 수 있습니다. 그다음에는 중간 출력이 다음 게이트에 정확히 연결되었는지 확인합니다. 이 순서를 습관으로 만들면 복잡한 회로도도 막연히 외우지 않고 근거를 따라 계산할 수 있습니다. 정답을 맞히는 것뿐 아니라 결과가 왜 그렇게 나왔는지 설명하는 연습이 디지털 논리의 가장 좋은 출발점입니다.

처음에는 종이와 연필로 네 줄을 천천히 계산해도 괜찮습니다. 반복해서 확인하다 보면 입력이 같은 줄과 다른 줄이 눈에 들어오고, XOR의 출력 패턴도 자연스럽게 기억됩니다. 빠른 암기보다 규칙을 스스로 재구성하는 능력이 더 오래 남습니다. 꾸준히 연습해 보세요.