비트 OR 연산자(|)는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 대응하는 비트와 하나씩 비교하는 연산자입니다. 비교 결과, 두 비트 중 하나라도 1이면 해당 위치의 결과 비트는 1로 설정되고, 둘 다 0인 경우에만 결과 비트가 0으로 설정됩니다.
비트 OR 연산의 기본 규칙
비트 OR 연산은 다음과 같은 진리표를 따릅니다.
- 0 | 0 = 0
- 0 | 1 = 1
- 1 | 0 = 1
- 1 | 1 = 1
즉, 어느 한쪽이라도 1이면 결과는 항상 1이 됩니다. 이러한 특성 때문에 비트 OR는 특정 비트를 강제로 1로 설정(플래그 설정)할 때 자주 활용됩니다.
사용 시 주의사항
비트 포함 OR(bitwise inclusive OR) 연산자의 양쪽 피연산자는 반드시 정수형(integral type)이어야 합니다. 정수형이 아닌 피연산자에 이 연산자를 사용하면 컴파일 오류가 발생합니다.
예제 코드
다음 예제는 16진수 패턴 0x5555(2진수 0101...)와 0xAAAA(2진수 1010...)를 비트 OR 연산한 결과를 출력합니다.
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // 패턴: 0101 ...
unsigned short b = 0xAAAA; // 패턴: 1010 ...
cout << hex << (a | b) << endl;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
ffff
결과 해석
0101...과 1010... 패턴은 서로 보완적인 구조이기 때문에, 각 비트 위치마다 항상 한쪽이 1입니다. 따라서 모든 비트가 1로 설정된 ffff(16비트 전부 1)가 결과로 나옵니다. 이처럼 비트 OR 연산은 서로 다른 비트 패턴을 하나로 합치거나, 원하는 비트를 켜는(on) 작업에 유용하게 사용됩니다.