비트 연산자 에는 두 가지 종류가 있습니다.
바로 비트 논리 연산자와 비트 이동 연산자 입니다.
비트 논리 연산자에는 &, |, ^, ~ 가 있고,
비트 이동 연산자 에는 >>, << 가 있습니다.
먼저 비트 연산을 설명 하기 위해서는 데이터의 저장형태를 이해해야 합니다.
데이터는 메모리에 저장이 됩니다.
메모리는 모든 데이터를 1과 0 으로만 구성된 2진수로 저장이 가능 합니다.
8개의 비트를 모아서 1 바이트 (Byte) 라고 하고, 32 비트는 4 바이트가 됩니다.
어쨌든, 연속된 0 과 1 로 데이터를 표시하며, 그것을 8개씩 모아 바이트 단위로도 표시 합니다.
이처럼 값을 0 과 1로 만 표현한 형태를 2진수 라고 합니다.
1 바이트는 2의 8승이며 표시 가능한 숫자의 갯수는 256 가지 입니다.
이것은 16 진수로 표현 하면 0xFF 에 해당 합니다.
16 진수 표현중 가장 큰 수인 F 는 비트로 1111 을 뜻 하고 10 진수로는 15가 됩니다.
즉 8개의 비트 1111 은 16 진수 값으로 F 에 해당 하며 16진수를 표현 할때는 앞에 '0x' 를 붙어 0xF 라 씁니다.
10 진수 | 16 진수 | 2 진수 |
0 | 0x0 | 0000 |
1 | 0x1 | 0001 |
2 | 0x2 | 0010 |
3 | 0x3 | 0011 |
4 | 0x4 | 0100 |
5 | 0x5 | 0101 |
6 | 0x6 | 0110 |
7 | 0x7 | 0111 |
8 | 0x8 | 1000 |
9 | 0x9 | 1001 |
10 | 0xA | 1010 |
11 | 0xB | 1011 |
12 | 0xC | 1100 |
13 | 0xD | 1101 |
14 | 0xE | 1110 |
15 | 0xF | 1111 |
C 언어로 마이크로 프로세서를 다루는 펌웨어 코딩을 하게 된다면,
위 표는 그냥 자연스레 외워 두시는게 좋습니다.
사실 위 표는 4비트 단위로 표현된 표이며, 실제로 모든 데이터는 최소 8 비트 ( 1바이트) 단위로 계산되므로
0xF 와 같은 값보다는 0xEF 와 같은 1바이트 형태 또는 0xFF00240F 와 같은 4바이트 형태를 많이 접하게 될 겁니다.
참고로 우리가 사용하는 PC 는 최근들어 대부분 64비트 데이터처리가 가능 하지만, 아직 까지 대부분의 연산은 32비트로 합니다.
long long 이라는 자료 형은 64 비트의 데이터 공간을 생성 합니다.
어쨌든 데이터가 저장되는 형태를 1과0 의 연속이라는 것을 알았고, 그 연산의 단위는 1바이트 또는 2바이트 또는 4 바이트 단위임을 알게 되었습니다.
이제 본론인 비트 연산으로 들어가 보겠습니다.
계속 쓸께요.... 졸려서.. 오늘은 이만.
댓글