[C] 구조체 비트 필드(Bit Field)
포스트
취소

[C] 구조체 비트 필드(Bit Field)

C언어 구조체 비트 필드 (Bit Field)

구조체의 기능

정수형 데이터를 비트 단위로 나누어서 사용할 수 있다. 이를 구조체의 Bit Field 라고 한다.

1
2
3
4
5
struct 구조체명 {
    unsigned 정수형 이름1   :비트수 ;
    unsigned 정수형 이름2   :비트수 ;
    ...
};

사용 가능한 정수 자료형의 종류

  • char
  • short
  • int
  • long

double, float 과 같은 실수 자료형은 사용할 수 없다.

사용 예시

  1. PLMN ID ( MCC + MNC )
    1
    2
    3
    4
    5
    6
    7
    8
    
     struct PlmnId {
         uint8_t     mcc1    :4;
         uint8_t     mcc2    :4;
         uint8_t     mcc3    :4;
         uint8_t     mnc3    :4;
         uint8_t     mnc1    :4;
         uint8_t     mnc2    :4;
     };
    

    이 Bit Field 구조체는 총 24bit를 관리할 수 있는 형태가 되며,

    데이터 타입의 크기인 8bit 보다 전체 bit field의 합이 더 크기 때문에,

    데이터 타입의 크기의 배수만큼 증가하여서 8 * 3 = 24 bit = 3 byte가 된다.

참고 자료

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

[Linux] tar 명령어 사용법

[Linux] 공유 메모리 함수, shmget(), shmat(), shmctl(), shmdt()