Category Archives: Language

[C/C++] 구조체 bit 단위 선언에서 MSB, LSB

통신에서 구조체를 사용해 상호간의 data를 넘기는 경우가 많다.
이 경우 bit 단위로 구성된 부분을 아래와 같이 정의 할 경우가 있는데,  이와 같이 bit 단위 설정을 할 때는 아래쪽에 위치한 변수가 MSB 쪽임을 기억하자

struct _stTest
{
    unsigned char opcode;
    unsigned char Re_Ac:2; // Receive , Ack 가 LSB
    unsigned char source:3;
    unsigned char dest:3; // destination 3 bit가 MSB
};

———————–
| opcode (1byte) |
———————–
—————————————————–
| dest(3bit) | source(3bit) | Re_Ac(2bit) |
—————————————————–
 
요렇게 ㅎㅎ

Little-Big Endian

통신에서 Little – Big endian이 헷갈릴 때가 종종있다.  

참고 참고

 

기본적인 개념은 아래와 같으며 (출처 : wikipedia)

 

예는 이러하다.

Hex. 0x1234의 표현

Big Endian

12 34

Little Endian

34 12

 

Hex. 0x12345678의 표현

Big Endian

12 34 56 78

Little Endian

78 56 34 12

 

 
byte 단위로 저장되면서 바뀌는 부분인데,  
int 같은 경우에는 4byte 인데, 위에서 언급한 0x12345678 인 경우에 little endian의 경우에는 78 56 34 12 로 저장됨을 기억하자.