본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

Byte Order, Little Endian, Big Endian, MSB, LSB

by i.got.it 2016. 2. 7.

 

 

개요.

  2바이트 이상의 자료형을 메모리에 저장할 때 저장 최소단위 1바이트 단위 저장시 메모리 주소 작은 곳부터 LSB 먼저 저장되는지, 혹은 MSB 먼저 저장 되는지 단일하고 확고한 표준이 없고, 서로 반대되는 순서인 Little Endian, Big Endian 이 혼재되어있다.




리틀엔디안 빅엔디안 용어 자체는 걸리버 여행기에 나오는 삶은 계란 뭉퉁한 쪽을 먼저 까는  파를 빅엔디안, 뽀족한 쪽을 먼저 까는 파를 리틀 엔디안이라고 하는 것에서 가져온 용어. (참고로 나는 계란 옆구리  부터 깐다.)


메모리에 1바이트 단위 로 배치 할 때 메모리 주소의 작은 것에 최상위 바이트를 배치하는 것을 빅엔디안, 메모리 주소 작은것에 최하위 바이트를 배치하는것을 리틀 엔디안이라고 하는데... 하 ...  그냥 MSB first , LSB first 라고 하면 혼선없이 명확하게 다 표현 가능하고 사람들 간에 혼선없이 공유 가능 함에도...  쓰잘데기 없이 혼선 가중 시키는 문학적 용어 남발 하지마라. 오히려 더 지저분 해지고 혼선만 가중시킨다. 이 분야는 문학이 아니고 과학, 공학 영역이다. 




   

 

 

 

Little Endian, Big Endian

  2바이트 이상 변수의 데이터를 바이트 단위로 분리 저장시 메모리의 작은 주소에 LSB가 먼저 배치되는 Little Endian, MSB가 먼저 배치되는 Big Endian 방식이 있다.


상세.
아래 처럼 4바이트 정수 byte_4 라는 변수에 16진수 0xDDCCBBAA 라는 값을 대입했다고 하자. 


uint32_t byte_4 = 0xDDCCBBAA; // 10진수 3721182122  의 16진수 표현.


숫자 0xDDCCBBAA 가 메모리에 저장될 때는 1바이트 단위 (즉,0xDD, 0xCC, 0xBB, 0xAA )로 잘려서 저장되게된다.


Little Endian 방식.
메모리의 작은 주소에 저장대상 숫자의 LSB(Least Significant Byte) 부터 먼저 배치되는 방식.
 
Big Endian 방식.
메모리의 작은 주소에 저장대상 숫자의 MSB(Most Significant Byte) 부터 먼저 배치되는 방식.


 메모리 주소 -> 주소 N   주소 N+1  주소 N+2   주소 N+3 
 Little Endian 방식.
 LSB first
0xAA  0xBB  0xCC  0xDD 
 Big Endian 방식.
 MSB first
0xDD  0xCC  0xBB  0xAA 


 나의 타겟시스템의 Byte Order 확인하는 방법
 인텔 CPU 이면 Little Endian 이 사용되고 있다고는 하나, 임베디드 시스템 등 타겟 시스템을 여러 기종을 핸들링 하는 경우 바이트 순서를 명확히 파악해둬야 한다. 메뉴얼 찾아 보는것보다 코드로 타겟 시스템에서 직접 확인해보는게 가장 빠르고 확실한 방법이다.


확인 코드예.
 uint32_t byte_4 = 0xDDCCBBAA;
 uint8_t * p_byte1 = (uint8_t*)(&byte_4);  


위와같이 정의된 p_byte1 에 저장된 값(*p_byte1)을 확인하여 0xAA 가 출력된다면 LSB first (=Little endian) 시스템이고, 0xDD 가 출력되었다면 MSB first ( = Big endian) 시스템이다.

   

 

 

 본 글이 포함된 상위 정리 장소.


 Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

 

 

 


첫글등록 : 2016년 2월7일.

최종수정 : 2023.08.27 

 

본글단축주소 : https://igotit.tistory.com/657

 


 

 

 

 

 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5