Bit field 예제


임베디드 개발하는데 필수적으로 레지스터 건드릴때 쓰는 bit field입니다.

어렵게 글로 설명하는 것보다 그림과 코드를 보는게 낫겠습니다.

[A:6][B:4][C:6][D:16]

숫자는 bit이고 총 합이 32bits 인 데이터가 있습니다.


typedef union {
    struct {
        unsigned int A    : 6; /* [0:5] */
        unsigned int B    : 4; /* [6:9] */
        unsigned int C    : 6; /* [10:15] */
        unsigned int D    : 16; /* [16:31] */
    } bits;
    unsigned int value;
} Register;

Union의 개념만 익숙하다면 너무 쉽네요.

[A:6][B:4][C:6][D:16] = [value:32]



댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제

git pull 을 했더니 branch가 갈라지는 경우