XOR 계산기: 배타적 논리와 비트 연산
불리언 값, 이진수열, 10진 정수의 XOR를 단계별 설명과 진리표로 계산합니다.
연산 유형을 선택하고 두 값을 입력한 뒤 계산을 누르면 XOR 결과를 볼 수 있습니다. 필요하면 진리표와 단계별 설명도 함께 표시됩니다.
XOR 계산기: 배타적 논리와 비트 연산
불리언 값, 이진수열, 10진 정수의 XOR를 단계별 설명과 진리표로 계산합니다.
두 불리언 값(0/1 또는 true/false)에 XOR를 적용합니다. 두 입력 중 정확히 하나만 true일 때 true를 반환합니다.
XOR 계산기 소개
XOR는 Exclusive OR(배타적 OR)의 약자로, 불 대수와 디지털 전자공학의 기본 논리 연산 중 하나입니다. 일반 OR은 입력 중 하나 이상이 true이면 true를 반환하지만, XOR는 두 입력 중 정확히 하나만 true일 때만 true를 반환하고 둘 다 true이거나 둘 다 false이면 false를 반환합니다. 이런 '배타적' 특성 때문에 XOR는 컴퓨팅과 수학의 다양한 영역에서 특히 유용합니다.
가장 기본적으로, 불리언 XOR는 이항 논리 게이트입니다. 두 입력이 각각 0(false) 또는 1(true)일 때, 입력이 서로 다를 때만 출력이 1이 됩니다. 완전한 진리표는 0 XOR 0 = 0, 0 XOR 1 = 1, 1 XOR 0 = 1, 1 XOR 1 = 0 입니다. 이는 '둘 중 하나만, 둘 다는 아님'과 같은 뜻입니다. 일상적으로 말하면 '케이크나 파이 중 하나는 먹겠지만 둘 다는 아니다'가 XOR 문장입니다.
이진 XOR는 불리언의 개념을 전체 비트 문자열로 확장합니다. 두 입력 시퀀스의 대응하는 비트 쌍이 각각 독립적으로 XOR되어 출력 비트를 만듭니다. 예를 들어 1010 XOR 1100 = 0110 입니다. 첫 번째 비트(1과 1)는 0, 두 번째(0과 1)는 1, 세 번째(1과 0)는 1, 네 번째(0과 0)는 0이 되기 때문입니다. 이 연산은 디지털 통신의 오류 검출, RAID 저장 시스템의 패리티 계산, 그리고 스트림 암호에서 핵심적입니다.
비트 XOR는 10진 정수의 전체 이진 표현에 동시에 작용합니다. 현대 프로세서는 비트 XOR를 단일 클록 명령으로 구현하므로 매우 빠릅니다. 프로그래머들은 비트 XOR를 다양한 요령에 활용합니다. 임시 변수 없이 두 정수를 바꾸기(a ^= b; b ^= a; a ^= b;), 비트마스크의 특정 비트 토글, 배열에서 중복되지 않은 하나의 값 찾기, 체크섬 계산 등이 그 예입니다. a XOR a = 0(어떤 값이든 자기 자신과 XOR하면 0)과 a XOR 0 = a(어떤 값이든 0과 XOR하면 자기 자신)라는 성질이 이런 응용의 기반이 됩니다.
암호학에서 XOR는 원타임 패드의 핵심입니다. 키가 진정으로 무작위이고 한 번만 사용된다면, 이론적으로 깨지지 않는 유일한 암호 방식입니다. 메시지의 각 비트는 키의 대응 비트와 XOR됩니다. 복호도 동일합니다. 같은 키로 암호문을 다시 XOR하면 원문이 복원됩니다. XOR는 자기 자신의 역연산이기 때문입니다: (a XOR k) XOR k = a. 스트림 암호와 CTR, OFB 같은 블록 암호 모드도 이 성질을 이용해 블록 암호를 키스트림 기반 시스템으로 바꿉니다.
이 XOR 계산기는 불리언, 이진, 비트 연산의 세 가지 변형을 한곳에서 처리합니다. 값을 입력하고, 필요에 맞는 연산 모드를 선택한 뒤, 진리표나 단계별 설명을 켜서 결과가 어떻게 나오는지 정확히 확인할 수 있습니다.
XOR 계산기 예시
불리언, 이진, 비트 모드에서 자주 쓰는 XOR 연산을 실제 값으로 보여줍니다.
| 입력 | 결과 | 설명 |
|---|---|---|
| 불리언: true XOR false | true | 입력이 다르므로 XOR는 true를 반환합니다. 1 XOR 0 = 1 입니다. |
| 불리언: true XOR true | false | 두 입력이 같으므로 XOR는 false를 반환합니다. 1 XOR 1 = 0 입니다. |
| 이진: 1010 XOR 1100 | 0110 | 비트별 XOR: 1^1=0, 0^1=1, 1^0=1, 0^0=0. 결과는 0110(10진수 6)입니다. |
| 비트: 12 XOR 10 | 6 | 12의 2진수는 1100, 10은 1010입니다. XOR 결과는 0110 = 10진수 6입니다. |
XOR 계산기 사용 방법
- 연산 유형을 선택합니다. 불리언은 true/false, 이진은 비트열, 비트는 10진 정수용입니다.
- 첫 번째 값(A)을 선택한 유형에 맞는 형식으로 입력합니다. 불리언은 0/1/true/false, 이진은 1010 같은 비트 문자열, 비트는 10진 정수를 사용합니다.
- 두 번째 값(B)도 첫 번째와 같은 형식으로 입력합니다.
- 필요하면 '진리표 표시'를 켜서 네 가지 입력 조합을 보거나, '단계 표시'를 켜서 비트별 XOR 과정을 확인합니다.
- 'XOR 계산'을 눌러 결과를 계산합니다. '초기화'를 누르면 모든 입력을 지우고 다시 시작할 수 있습니다.
XOR 계산기 FAQ
XOR는 무엇인가요?
XOR는 Exclusive OR(배타적 OR)의 약자입니다. 두 입력 중 정확히 하나만 true일 때 true(1)를 반환하고, 두 입력이 같으면 false(0)를 반환하는 논리 연산입니다. '배타적'이라는 말은 두 입력이 모두 true일 때도 true를 반환하는 일반 OR과 구분됩니다.
XOR와 OR의 차이는 무엇인가요?
일반 OR은 한쪽 또는 양쪽이 true이면 true를 반환합니다. XOR는 한쪽이 true이고 다른 쪽이 false일 때만 true를 반환하며, 양쪽이 모두 true인 경우를 제외합니다. 0 OR 0 = 0과 1 OR 1 = 1은 같지만, 1 XOR 1 = 0이고 1 OR 1 = 1이라는 점에서 차이가 드러납니다.
왜 XOR가 암호학에서 중요한가요?
XOR는 자기 자신의 역연산입니다: (a XOR k) XOR k = a는 어떤 a와 k에 대해서도 성립합니다. 즉, 키로 XOR하여 암호화하고 같은 키로 다시 XOR하면 복호화할 수 있습니다. 원타임 패드는 이론적으로 깨지지 않는 유일한 암호 방식이며, 전적으로 XOR에 기반합니다. 스트림 암호와 많은 블록 암호 모드도 XOR를 이용해 키 재료와 평문을 섞습니다.
길이가 다른 이진수를 XOR하려면 어떻게 하나요?
짧은 쪽의 왼쪽에 0을 채워 두 길이를 같게 만든 뒤, 대응하는 비트를 하나씩 XOR하면 됩니다. 예를 들어 110 XOR 1010은 0110 XOR 1010 = 1100이 됩니다. 이 계산기는 자동으로 왼쪽 0 채우기를 처리합니다.
프로그래밍에서 비트 XOR의 실용적인 용도는 무엇인가요?
비트 XOR는 임시 변수 없이 두 변수를 바꾸는 a ^= b; b ^= a; a ^= b; 같은 기법에 자주 쓰입니다. 또한 플래그의 특정 비트를 토글하거나, 배열에서 중복되지 않는 한 요소를 찾거나(모든 요소를 XOR하면 짝은 0으로 상쇄됨), 빠른 체크섬과 해시 혼합을 계산하는 데도 사용됩니다.
XOR는 두 개보다 많은 입력에도 쓸 수 있나요?
네. 다중 입력 XOR는 단순히 두 개씩 순차적으로 XOR하는 것입니다. 1의 개수가 홀수면 결과는 1(true), 짝수면 0(false)입니다. 이 성질은 RAID-5 패리티 계산에 쓰이며, 여러 데이터 디스크의 패리티는 모두의 XOR로 구합니다.