본문 바로가기
  • 오늘도 신나게
카테고리 없음

초딩도 이해하는 C 언어 - 비트 연산자

by 앵그리선반장 2020. 5. 7.

비트 연산자 에는 두 가지 종류가 있습니다.

바로 비트 논리 연산자와 비트 이동 연산자 입니다.

비트 논리 연산자에는 &, |, ^, ~ 가 있고, 

비트 이동 연산자 에는 >>, << 가 있습니다.

 

먼저 비트 연산을 설명 하기 위해서는 데이터의 저장형태를 이해해야 합니다.

데이터는 메모리에 저장이 됩니다.

메모리는 모든 데이터를 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 바이트 단위임을 알게 되었습니다.

이제 본론인 비트 연산으로 들어가 보겠습니다.

계속 쓸께요.... 졸려서.. 오늘은 이만.

댓글