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

C++ 비트 OR(Bitwise OR) 연산자란? 개념과 예제로 쉽게 이해하기

비트 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) 작업에 유용하게 사용됩니다.