C 언어에서 비트 연산자는 비트 논리 연산을 수행하는 연산자입니다. 비트 연산자는 비트 단위로 수행되므로, 비트를 조작하고 비트 패턴을 조작하는 데 사용됩니다.
C 언어에서 사용되는 비트 연산자는 다음과 같습니다.
& 연산자는 두 비트 모두 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;
}
| 연산자는 두 비트 중 하나라도 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;
}
^ 연산자는 두 비트가 서로 다른 경우에만 결과 비트가 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칸 이동시킨 결과입니다.