ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어의 비트 필드
    공부/Embedded Recipe 2024. 12. 12. 23:52

    비트 필드

    구조체 비트 필드를 사용하면 멤버를 비트 단위로 저장할 수 있다.

    CPU나 칩의 플래그, 그 외 Low Level 프로그래밍에서 자주 사용한다.

     

    아래와 같은 코드를 실행 해보자.

    #include <stdio.h>
    struct Flags {
        unsigned int a : 1;     // a는 1비트 크기
        unsigned int b : 3;     // b는 3비트 크기
        unsigned int c : 7;
    };
    int main()
    {
        struct Flags f1;
        f1.a = 2;      // 0000 0010
        f1.b = 31;     // 0001 1111
        f1.c = 4;    // 0000 0010
        printf("%u\n", f1.a);       //0
        printf("%u\n", f1.b);       //7
        printf("%u\n", f1.c);       //4
        return 0;
    }

    각각 더 큰 값을 입력해도 선언된 비트필드를 넘어가지 않게 된다.

     

     

    비트 필드의 메모리 배치

    비트 필드의 경우 차례대로 LSB 부터 배치됨

     

     

     

    비트 필드와 유니온

    struct Flags {
        union {    // 익명 공용체
            struct {    // 익명 구조체
                unsigned short a : 2;    
                unsigned short b : 3;    
                unsigned short c : 7;    
                unsigned short d : 4;    
            };                           
            unsigned short e;    // 2바이트(16비트)
        };
    };

    '공부 > Embedded Recipe' 카테고리의 다른 글

    Clock과 잡다한 것  (0) 2024.12.12
Designed by Tistory.