Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 비트별 XOR(Bitwise XOR) 연산자란? 원리와 예제 총정리

C++ 비트별 XOR(^) 연산자란?

비트별 배타적 OR(Bitwise Exclusive OR) 연산자인 ^는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 대응하는 비트와 하나씩 비교합니다. 두 비트 중 하나가 0이고 다른 하나가 1일 때만 해당 결과 비트가 1로 설정되며, 그 외의 경우(두 비트가 모두 0이거나 모두 1인 경우)에는 결과 비트가 0으로 설정됩니다.

비트별 XOR 연산자의 양쪽 피연산자는 반드시 정수 계열 타입(integral type)이어야 합니다. 즉, int, unsigned short, long 같은 정수형에만 사용할 수 있으며, floatdouble 같은 부동소수점 타입에는 적용할 수 없습니다.

XOR 진리표

ABA ^ B
000
011
101
110

예제 코드

#include <iostream>
using namespace std;

int main() {
    unsigned short a = 0x5555;   // 0101... 비트 패턴
    unsigned short b = 0xFFFF;   // 1111... 비트 패턴
    cout << hex << (a ^ b) << endl;
}

실행 결과

aaaa

결과값 aaaa는 1010... 형태의 비트 패턴을 나타냅니다. 0x5555(0101...)의 각 비트가 0xFFFF(1111...)와 XOR 연산을 거치면서 모두 반전되어 0xAAAA(1010...)가 되는 것입니다.

이처럼 XOR 연산은 특정 비트 패턴을 반전(invert)하거나, 두 값이 서로 다른지 검사하거나, 간단한 암호화 및 체크섬 계산 등 다양한 분야에서 널리 활용됩니다.