게임강의

[비베] 비트필드를 구현해보자

컨텐츠 정보

본문


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)


Logo.pngCodeHighligher



이것은 몇바이트 일까요? 2바이트입니다.



하지만 True/False 만 표현할것이라면 2비트면 충분합니다.



그래서 비트필드를 적용해본다면..



 



 #pragma pack(push, 1)

struct Information



{



   unsigned char AA : 1;



   unsigned char BB : 1;



}



#pragma pack(pop)


Logo.pngCodeHighligher



이것은 몇바이트 일까요? 1바이트입니다.



실제로 비트를 쓰지만 저장할때는 비트를 저장하지 못함으로 최소 단위인 바이트로 저장이됩니다.



[ 즉.. 1비트짜리를 8번 써도  1바이트 저장되게 됩니다. ]





이것은



%C0%CC%B9%CC%C1%F6_019.png?type=w740



이런 형태로도 나타냅니다.



 



 @@@@@@@@@@@@ 하지만 VB6 은 비트필드가 없습니다. @@@@@@@@@@@@

 



그래서 And 와 Or 으로 비트필드를 구현해주어야합니다.



 



%C0%CC%B9%CC%C1%F6_020.png?type=w740



 



비트필드가 적용된 구조체



https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb759788(v=vs.85).aspx


관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0