Study

비트 필드(bit field)

슈라。 2009. 2. 5. 09:36

▶ 비트 필드의 개념
    C에서 int형 멤버를 사용하기에는 너무 작은 값을 가질 경우, 이것을 일정한 비트 수만
  큼 할당하여 표현 할 수 있다. 비트 필드는 C의 구조체나 공용체에서 하나 이상의 비트들
  로 구성된 int형이나 unsigned int형 멤버이다.

type member_name : size

 

    위와 같은 형식을 따르고 type은 int 또는 unsinned int이며, singed 비트 필드의 최상
  위 한 비트는 부호 비트로 취급된다. size는 비트 필드에서 제시된 비트 수를 말하며, 폭
  (width)이라 한다. 이것은 콜론(:) 다음 음수가 아닌 정수형 상수식으로 지정되며, 폭의
  최대크기는 워드의 비트 수(32bit)와 같다.

 

    비트 필드를 사용할 경우, 사용 시에 다음과 같은 제한 사항을 고려해야한다.
       ① int형 및 unsigned int 형의 변수만 정의 가능
       ② 비트 필드에 배열은 불허
       ③ 비트 필드는 주소를 가질 수 없다. & 연산자 또한 사용할 수 없다.
       ④ 비트 필드를 반환하는 함수 불허
       ⑤ 구조체 멤버 내에 int형 또는 unsigned int형 이외의 다른 형의 멤버가 혼재하는 경
           우, 사용하지 않는 비트가 생길 수 있다.

 

비트필드 사용 예)

struct bitfield
{
   unsigned int a : 2;
   unsigned int b : 3;
};

struct bitfield bf = {3,2};

bf.a = 3, bf.b = 2 가 들어간다.
즉, bf.a 에는 11, bf.b에는 010 의 정해진 비트 수만큼의 이진수가 저장된다.