1. 비트 OR 연산자 (|)
| a의 비트 |
b의 비트 |
a의 비트 | b의 비트 |
| 0 | 0 |
0 |
| 0 | 1 |
1 |
| 1 | 0 |
1 |
| 1 | 1 |
1 |
| 0 |
0 | 0 |
0 | 1 | 0 | 1 |
0 |
| | | | |
| |
| |
| | | |
| |
| |
| 0 | 0 |
0 |
0 | 1 |
1 |
0 |
0 |
| = | = | = | = |
= | = |
= | = |
| 0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 |
2. 비트 XOR 연산자 (^)
| a의 비트 |
b의 비트 |
a의 비트 ^ b의 비트 |
| 0 | 0 |
0 |
| 0 | 1 |
1 |
| 1 | 0 |
1 |
| 1 | 1 |
0 |
3. 비트 NOT 연산자 (~)
| a의 비트 |
~a의 비트 |
| 0 | 1 |
| 1 | 0 |
4. 비트 이동 연산자 (<<, >>)
| 0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
위의 첫번째 표는 10을 2진수로 나타낸 것이다. 아래의 두번째 표는 10<<2로 10을 왼쪽으로 2비트씩 이동시킨 것이다.
파란색 부분은 빈자리에 대신 들어온 비트이다. 이때 빈자리에는 0이 채워진다. 비트 이동 연산자의 우변이 n이라고 하면, 비트 왼쪽 이동은 2^n을 곱하는 것과 결과가 같다.반대로 오른쪽 이동은 2^n을 나누는 것이 된다.
| #include <stdio.h> int main(void) { int a=10; //0x0a int b; b = a <<2; printf("a <<2 = %08x(%d)\n",b,b); b = a >>2; printf("a >>2 = %08x(%d)\n",b,b); return 0; } |
비트 이동 연산자를 이용한 위의 코드로 확인이 가능하다.
'프로그래밍 > C' 카테고리의 다른 글
| 배열과 포인터의 관계 (0) | 2010.10.09 |
|---|---|
| 포인터 (Pointer) (0) | 2010.10.09 |
| 선택정렬 (Selection Sort) (0) | 2010.10.09 |
| 배열 (array) (0) | 2010.10.09 |
| 삼각형 출력하기 (0) | 2010.10.03 |
| 형변환 (type conversion) (0) | 2010.10.03 |
| 삼항 연산자를 이용한 최대값 구하기 (0) | 2010.10.03 |