비트 필드는 잘 사용하면 메모리를 아주 효율적으로 사용할 수 있도록 해주는 방법이다.
특히 가용 자원이 넉넉하지 않은 시스템에서는 큰 효과를 볼 수 있고, 클럭(처리속도)를 절약할 수도
있다.

사용방법은 다음과 같다.
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 에 대해서는 인터넷에 자료 많으니 검색하시길...

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by TylorSTYLE™

BLOG main image

카테고리

전체 (55)
SAMSUNG MCU (14)
Embedded Linux (5)
Mac OS X (5)
신변잡기 (19)
디지털 회로 (1)
Programming (9)

달력

«   2008/10   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

글 보관함