본문 바로가기
C/[코드조선] C 핵심

[C] 비트필드와 비트플래그

by 묻공러 2024. 2. 14.

비트필드(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] 버퍼, 버퍼링  (1) 2024.02.13
[C] 구조체 복사  (0) 2024.02.12