Bit Field
Programming/C 2013. 2. 15. 04:12 |비트(Bit) - 데이터(자료)를 표현하기 위한 최소 단위.
필드(Field) - 데이터(자료)를 처리하기 위한 최소 단위
비트 필드
: 비트 구조체는 비트들을 멤버로 가지는 구조체이며, 비트 필드(Bit Field) 라고도 부른다.
: 비트 하나로 2가지를 표현할 수 있다. (0, 1) 비트 두개로는 4가지를 표현할 수 있다.
즉, 비트 n개는... 로 표현이 된다.
비트 필드를 쓰는 이유
: 멤버가 가질 수 잇는 값의 범위가 아주 작다면 char보다 더 작은 단위로 비트를 쪼개어 알뜰히 정보를 기억시킬 수 있다. 이때 사용하는 것이 "비트 필드"이다.
기본 틀
: struct 이름
{
타입 멤버1 : 비트 수;
타입 멤버2 : 비트 수;
...
};
: 멤버의 타입은 정수만 가능하며, 부호의 여부에 따라 unsigned, signed int 둘 중 하나의 타입을 지정한다.
: 비트로 표현해야 할 정보는 수치값이라기보다는 일종의 기호나 표식인 경우가 많이 때문에 부호를 쓰는 경우는 드물다. 따라서 비트 필드의 멤버들은 통상 unsigned 타입이다.
: double 자료형이나 포인터, 배열은 비트 필드가 될 수 없다.
: A는 1비트를 사용함으로 0~1 까지 표현 가능하다.
: B와 C는 2비트를 사용함으로 0~3 까지 표현 가능하다.
: D는 3비트를 사용함으로 0~7 까지 표현 가능하다.
A(1bit) |
B (2Bit) |
C (2Bit) |
D (3Bit) |
1 |
1 1 |
0 0 |
1 1 1 |
※ C는 4를 넣어서 표현 한계인 3을 넘어버렸다. 그래서 오버플로우가 발생하여 경고 메시지가 뜨고 실행이 안되는 것이다.
C 변수는 0~3 까지 표현 가능하다는 사실을 알 수 있다.
비트 필드의 활용 예
'Programming > C' 카테고리의 다른 글
void pointer 예제 (0) | 2013.09.18 |
---|---|
scanf 함수의 리턴 값 (0) | 2013.03.27 |
Bit Mask (0) | 2013.02.15 |
시간과 날짜 관련 함수들 (0) | 2013.02.15 |
난수 (Random Number) (0) | 2013.02.15 |