[비베] 비트필드를 구현해보자
컨텐츠 정보
- 1,513 조회
본문
bool 처럼 True / False 만 반환되는것을 표현할때는 1비트면 충분합니다.
하지만 bool 은 1바이트지요. 이것은 CPU 가 기본적으로 처리하는 최소 단위라서라고 하더군요.
[ 스오플 또는 위키 참조 ]
bool 형을 2개이상 사용하게 되면은 그에따라 바이트가 늘어나게 되요.
1비트만 표현할껀데.. 바이트가 계속 늘어나는건 비효율적이죠.
그래서 만들어진것이 비트필드입니다.
요즘은 메모리가 빵빵해서 쓸일이 많이 없겠지만..
간단히 말해서 비트필드는 비트를 정해주는것이죠.
#pragma pack(push, 1)
struct Information { unsigned char AA; unsigned char BB; } #pragma pack(pop) CodeHighligher |
이것은 몇바이트 일까요? 2바이트입니다.
하지만 True/False 만 표현할것이라면 2비트면 충분합니다.
그래서 비트필드를 적용해본다면..
#pragma pack(push, 1)
struct Information { unsigned char AA : 1; unsigned char BB : 1; } #pragma pack(pop) CodeHighligher |
이것은 몇바이트 일까요? 1바이트입니다.
실제로 비트를 쓰지만 저장할때는 비트를 저장하지 못함으로 최소 단위인 바이트로 저장이됩니다.
[ 즉.. 1비트짜리를 8번 써도 1바이트 저장되게 됩니다. ]
이것은
이런 형태로도 나타냅니다.
@@@@@@@@@@@@ 하지만 VB6 은 비트필드가 없습니다. @@@@@@@@@@@@ |
그래서 And 와 Or 으로 비트필드를 구현해주어야합니다.
비트필드가 적용된 구조체
https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb759788(v=vs.85).aspx
관련자료
-
이전
-
다음