|
비트 필드는 잘 사용하면 메모리를 아주 효율적으로 사용할 수 있도록 해주는 방법이다. 특히 가용 자원이 넉넉하지 않은 시스템에서는 큰 효과를 볼 수 있고, 클럭(처리속도)를 절약할 수도 있다.
사용방법은 다음과 같다. struct [구조체 형] { byte a:1; byte b:2; byte c:3; byte d:2; } [구조체 명];
struct 다!! C 좀 해봤다는 사람들은 써봤을 것이다. 하지만 선언 뒤에 콜론숫자 가 붙어있다.
일단 byte형 의 8 개 비트를 쪼갠 것인데 쪼갤 때 다음의 규칙만 지켜준다면 전 혀 문제없다.
* 쪼갤 형은 하나로 통일 내가 봐도 이해하기 어렵게 적은 타이틀이다. 무슨말이냐면, 저 위에 보면 byte 로만 선언되어있다. 그렇다! 하나로 통일해야 한다.
* 나눈 비트의 총 갯수는 변수형과 같아야 한다. byte(1Byte) 형의 경우 나눈 비트들의 총 갯수가 8 개. word, short Int (2Byte) 형의 경우 나눈 비트들의 총 갯수가 16 개. Long Int, dword (4Byte) 형의 경우 나눈 비트들의 총 갯수가 32 개 가 되어야 한다.
일단 장점은 비트 연산할 때 좋고, bool 형이 없는 C 의 경우엔 비트 필드를 이용해 메모리를 절약할 수 있다. 물론 bool 형 처럼 if 문에 조건으로 사용할 수 있다는 장점도 있다. >> if ([구조체 명].a)
응용편 union ByteBitField { byte All; struct { byte a: 1; byte b: 1; byte c: 1; byte d: 1; byte e: 1; byte f: 1; byte g: 1; byte h: 1; }; };
나는 이렇게 놓고 쓴다. 변수처럼 모두 접근도 가능하기에.... union 에 대해서는 인터넷에 자료 많으니 검색하시길... |