비트 연산자

C 언어에서 비트 연산자는 비트 논리 연산을 수행하는 연산자입니다. 비트 연산자는 비트 단위로 수행되므로, 비트를 조작하고 비트 패턴을 조작하는 데 사용됩니다.

비트 연산자의 종류

C 언어에서 사용되는 비트 연산자는 다음과 같습니다.

& (AND 연산자)

& 연산자는 두 비트 모두 1인 경우에만 결과 비트가 1이 됩니다. 예를 들어, a = 60 (0011 1100)이고 b = 13 (0000 1101)일 때, a & b의 결과는 0000 1100입니다. 이는 두 수의 비트 AND 연산 결과입니다.

#include <stdio.h>

int main() {
   unsigned int a = 60; // 60의 2진수 표현: 0011 1100
   unsigned int b = 13; // 13의 2진수 표현: 0000 1101
   int result = a & b;  // 결과: 0000 1100
   printf("a & b = %d\\\\\\\\n", result);
   return 0;
}

| (OR 연산자)

| 연산자는 두 비트 중 하나라도 1인 경우 결과 비트가 1이 됩니다. 예를 들어, a = 60 (0011 1100)이고 b = 13 (0000 1101)일 때, a | b의 결과는 0011 1101입니다. 이는 두 수의 비트 OR 연산 결과입니다.

#include <stdio.h>

int main() {
   unsigned int a = 60; // 60의 2진수 표현: 0011 1100
   unsigned int b = 13; // 13의 2진수 표현: 0000 1101
   int result = a | b;  // 결과: 0011 1101
   printf("a | b = %d\\\\\\\\n", result);
   return 0;
}

^ (XOR 연산자)

^ 연산자는 두 비트가 서로 다른 경우에만 결과 비트가 1이 됩니다. 예를 들어, a = 60 (0011 1100)이고 b = 13 (0000 1101)일 때, a ^ b의 결과는 0011 0001입니다. 이는 두 수의 비트 XOR 연산 결과입니다.

#include <stdio.h>

int main() {
   unsigned int a = 60; // 60의 2진수 표현: 0011 1100
   unsigned int b = 13; // 13의 2진수 표현: 0000 1101
   int result = a ^ b;  // 결과: 0011 0001
   printf("a ^ b = %d\\\\\\\\n", result);
   return 0;
}

~ (보수 연산자)

~ 연산자는 비트의 보수를 구합니다. 0은 1로, 1은 0으로 바꿉니다. 예를 들어, a = 60 (0011 1100)일 때, ~a의 결과는 1100 0011입니다. 이는 a의 비트 NOT 연산 결과입니다.

#include <stdio.h>

int main() {
   unsigned int a = 60; // 60의 2진수 표현: 0011 1100
   int result = ~a;     // 결과: 1100 0011
   printf("~a = %d\\\\\\\\n", result);
   return 0;
}

<< (왼쪽 시프트 연산자)

<< 연산자는 비트를 왼쪽으로 이동시킵니다. 이동된 비트는 0으로 채워집니다. 예를 들어, a = 60 (0011 1100)일 때, a << 2의 결과는 1111 0000입니다. 이는 a의 비트를 왼쪽으로 2칸 이동시킨 결과입니다.