비트필드(bit field)
기본 자료형 중 가장 작은 자료형이 1바이트(8비트)이다
하지만, 비트 단위로 사용을 하고 싶다면
비트필드를 사용하면 된다
일련의 비트를 멤버로 가지는 구조체이다
unsigned char b0 : 1;
// unsigned char는 2바이트 자료형이지만
// 1비트만 사용하겠다는 비트 필드가 적용되었다
비트 플래그(bit flag)
비트필드 문법을 가지고 비트 플래그를 구현할 수 있다
#include <stdio.h>
struct bitflags
{
unsigned char c0 : 1;
unsigned char c1 : 1;
unsigned char c2 : 1;
unsigned char c3 : 1;
unsigned char c4 : 1;
unsigned char c5 : 1;
unsigned char c6 : 1;
unsigned char c7 : 1;
};
typedef struct bitflags bitflags_t;
int main(void)
{
bitflags_t playerState = { 0, };
printf("sizeof(flags): %zu\n", sizeof(playerState));
printf("%#X\n", *((char*)&playerState));
playerState.c3 = 1;
printf("%#X\n", *((char*)&playerState));
return 0;
}
'C > [코드조선] C 핵심' 카테고리의 다른 글
[C] 열거형과 공용체 (0) | 2024.02.15 |
---|---|
[C] 구조체 vs. 클래스 (0) | 2024.02.14 |
[C] 바이트 정렬 (0) | 2024.02.13 |
[C] 버퍼, 버퍼링 (0) | 2024.02.13 |
[C] 구조체 복사 (0) | 2024.02.12 |