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

C++의 비트 AND(Bitwise AND) 연산자 완벽 이해하기

C++에서 비트 AND 연산자(&)는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 대응하는 비트와 하나씩 비교하는 이항 연산자입니다. 비교 규칙은 매우 단순합니다.

  • 두 비트가 모두 1이면 → 결과 비트는 1
  • 그 외의 경우(하나라도 0이면) → 결과 비트는 0

즉, 논리 곱(AND)을 비트 단위로 수행한다고 생각하면 됩니다. 참고로 비트 AND 연산자의 양쪽 피연산자는 반드시 정수형(integral type)이어야 하며, float나 double 같은 부동소수점 타입에는 사용할 수 없습니다.

비트 AND 진리표

ABA & B
000
010
100
111

예제 코드

#include <iostream>
using namespace std;

int main() {
    unsigned short a = 0x5555;   // 2진 패턴: 0101 0101 ... 
    unsigned short b = 0xAAAA;   // 2진 패턴: 1010 1010 ...
    cout << hex << (a & b) << endl;
}

위 코드에서 변수 a는 16진수 0x5555(2진수로 0101... 패턴), 변수 b는 16진수 0xAAAA(2진수로 1010... 패턴)를 저장합니다. 두 값의 각 비트를 비교해 보면 어느 자리에서도 두 비트가 동시에 1인 경우가 없습니다.

실행 결과

0

따라서 출력 결과는 0이 됩니다. 이처럼 서로 보완적인(complementary) 비트 패턴을 가진 두 값을 AND 연산하면 모든 비트가 0이 되어 결과값도 0이 나오게 됩니다.

비트 AND의 주요 활용 사례

  • 특정 비트 검사(masking): 특정 비트가 켜져 있는지 확인할 때 사용합니다.
  • 비트 초기화: 원하지 않는 비트들을 0으로 끄는 데 활용됩니다.
  • 짝수·홀수 판별: n & 1 결과가 0이면 짝수, 1이면 홀수입니다.