비트 구조체는 비트 멤버를 포함한 구조체인데 비트 멤버는 원래 타입 크기보다 작게 크기를 지정할 수 있는 멤버입니다.
struct {
(변수 타입) (이름):(비트 크기);
...
};
만약 int a:4;인 경우 4비트의 크기를 가진 int 멤버를 생성합니다. 그래서 원래 int와 달리 나타낼 수 있는 숫자 범위가 적습니다.
struct {
int a:4;//위치 0비트
int b:12;//위치 4비트
int c:16;//위치 16비트
};//총 크기 32비트
- 비트 멤버의 타입은 실수가 아닌 단일 숫자 타입만 가능합니다. 즉, 실수나 배열, 구조체 등은 안됩니다.
- 비트 멤버의 크기를 원래 타입 크기보다 크게 지정할 경우 오류가 납니다. 예를 들어 int의 원래 크기인 32비보다 크게 지정하면 안 됩니다.
- 비트 멤버의 이름을 지정하지 않을 수도 있는데 이렇게 하면 해당 부분을 비트 크기만큼 건너 뛰는 역할을 합니다.
struct {
int a:16;//위치 0비트
int :16;
int b;//위치 32비트
};
위와 같이 중간의 16비트를 건너뛰어서 b의 위치는 32비트입니다.