본문 바로가기

진리는어디에

구조체 비트 단위 멤버

우리가 프로그램을 작성하다 보면 꼭 1byte, 2byte 같은 바이트 단위 크기의 자료를 저장 할 필요가 없을 경우가 있다. 예를 들자면 남/녀 성별을 구분하고자 할때 이것은 딱 1bit만이 필요 할 뿐이다. 하지만 가장 작은 자료형인 char 조차도 8bit를 차지한다. 

여기서 그에 대한 대안을 제시한다. 다음과 같이 구조체를 생성하게 되면 각 멤버는 콜론 뒤에 적인 수 만큼의 비트단위로 자료를 저장 할 수 있게 된다.
※ 일반 변수에는 적용이 되지 않으니 일반 변수 잡고 삽질하는 짓은 하지 말자.

struct STRUCTURE {
    int member1: 1; // 1 bit
    int member2: 2; // 2 bit
    int member3: 4; // 4 bit
};

위와 같이 멤버 변수 뒤에 콜론(:)을 찍어 주고 비트가 차지할 크기를 적어주면 됨.
다만 구조체 패딩에 문제가 발생 할 수 있으나 아직 확인 해본 바는 없음.
-> 실험 결과 세개의 멤버가 총 7bit만을 사용한다고 하더라도 4byte를 차지 한다는 것이 나왔다.
     또한 4byte 멤버 이후에 2bit의 멤버를 추가 시켰을 때에도 2bit멤버 하나가 4byte를 차지하는 현상이 발생했다.
원래의 자료형 보다 큰 비트를 적었을 경우 어떠한 현상이 발생하는지 확인된 바 없음.
혹시나 나와 같은 궁금증을 가지고 계신 블로거가 있다면 실험 해보시고 트랙백으로 연결해 주시면 감사..

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!