비트필드 구조체

언어/C 2016. 10. 27. 17:37

요즘은 안 쓰인다고 하지만 예전에 메모리가 귀하던 시절에는 메모리를 조금이라도 아끼기 위해서 사용되었다고 한다.

1
2
3
4
5
6
7
8
9
typedef struct
{
    char a:1;
    char b:1;
    char c:1;
    char d:1;
 
} _t_TestBit;
 


이렇게 비트필드 구조체를 작성하고 sizeof로 크기를 찍어보면 1바이트가 나온다.

1
2
3
4
5
6
7
8
9
typedef struct
{
    char a:2;
    char b:2;
    char c:2;
    char d:3;
 
} _t_TestBit;
 


이렇게 비트필드 구조체를 작성하고 sizeof로 크기를 찍어보면 2바이트가 나온다. (2,2,2,2)로 작성하면 1바이트가 나온다.


char를 사용하면 최소 1바이트 부터 값이 찍히지만 int를 사용하면 4바이트부터 값이 찍힌다.

비트필드를 사용할 때는 변수명을 안 적을 수도 있는데 만약 char :0; 이라고 적으면 현재 워드(char, int)의 미사용 비트를 모두 버린다. 혹은 char :1;이런 식으로 변수명을 안 적어도 비트를 버리는 역할만 한다.

Posted by 知彼知己百戰不殆
,