C++ 비트 연산자
1. 개요
1.1 문서 개요
이 문서는 C++에서 제공하는 비트 연산자에 대해 설명합니다. 비트 연산자는 피연산자를 비트 단위로 처리하는 연산자로, 하드웨어 제어, 성능 최적화, 플래그 처리 등 저수준 프로그래밍에서 중요하게 사용됩니다.
2. 내용
2.1 비트 연산자의 종류와 동작 방식
C++에서는 다음과 같은 비트 연산자를 제공합니다.
연산자 | 설명 | 예시 |
---|---|---|
& |
비트 AND | a & b |
` | ` | 비트 OR |
^ |
비트 XOR | a ^ b |
~ |
비트 NOT | ~a |
<< |
왼쪽 시프트 | a << n |
>> |
오른쪽 시프트 | a >> n |
2.1.1 비트 AND (&
)
두 비트 모두 1인 경우에만 결과가 1이 됩니다.
2.1.1.1 예시
int a = 5; // 0101
int b = 3; // 0011
int result = a & b; // 0001 -> 1
2.1.2 비트 OR (|
)
두 비트 중 하나라도 1이면 결과가 1이 됩니다.
2.1.3 비트 XOR (^
)
두 비트가 서로 다를 때만 결과가 1이 됩니다.
2.1.4 비트 NOT (~
)
비트를 반전시킵니다. 양수를 음수로, 음수를 양수로 바꿉니다 (2의 보수 표현 기준).
2.1.5 시프트 연산자 (<<
, >>
)
왼쪽 또는 오른쪽으로 비트를 이동시킵니다. 왼쪽 시프트는 곱셈 효과, 오른쪽 시프트는 나눗셈 효과를 가질 수 있습니다.
2.2 비트 연산의 활용
2.2.1 플래그 처리
여러 상태를 비트 단위로 저장하고 검사할 수 있습니다.
const int FLAG_READ = 0x01;
const int FLAG_WRITE = 0x02;
int mode = FLAG_READ | FLAG_WRITE;
if (mode & FLAG_WRITE) {
// 쓰기 가능
}
2.2.2 마스크(mask) 적용
특정 비트를 추출하거나 제거하는 데 사용됩니다.
3. 마무리
C++의 비트 연산자는 저수준에서 효율적인 데이터 처리를 위해 사용됩니다. 각 연산자의 동작 방식과 활용 예시를 통해 실무에서의 응용 가능성을 이해할 수 있으며, 플래그 처리 및 마스킹 연산 등에 필수적인 기능으로 작용합니다.