2017. 2. 13. 16:01

C 언어에서 Bit 단위로 변수를 지정하고 싶은 경우, Bit Field 라는 기능을 사용한다


기본적인 선언 방법은 다음과 같다.


struct bitField {

BYTE bit1:1;

BYTE bit2:1;

BYTE bit3:1;

BYTE bit4:1;

BYTE bit5:1;

BYTE bit6:1;

}


이와 같이 선언하면 1Byte 에 6개의 변수로 각각 1bit 까지의 데이터를 사용할 수 있다.

1bit 이므로, 0과 1만 입력이 가능하며, 2를 입력하게 되면 앞 비트를 침범하게 된다.


bitField.bit1 = 2; 


이와 같이 데이터값을 셋팅하면, 2의 binary 값은 10 이므로 bitField.bit1 는 0, bitFile.bit2 는 1이 셋팅되게 된다.


bit 단위로 데이터를 저장하거나,  bit 단위의 프로토콜 데이터를 사용하면 상당히 유용한 기능이다.

나는 bit 단위로 정보를 잘라서 전송해야 하는 CAN 프로토콜 사용시 유용하게 사용하였다.


비트필드의 선언 변수형은 C 언어의 모든 변수형이 사용이 가능하며, unsigned 형 변수로 사용하지 않는다면 상당한 주의가 필요하다. 



'Computer Programming > C,C++,MFC' 카테고리의 다른 글

[C]LineDraw - 브레젠험 알고리즘  (0) 2021.06.29
[C/C++] C언어 입력함수 scanf  (0) 2017.02.15
[C/C++] fopen 함수의 옵션값 정리  (0) 2016.11.10
[C/C++] bsearch 함수  (0) 2016.06.22
[MFC]CString <-> Char* 변환  (0) 2013.11.08
Posted by 은돌군