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 |