본문 바로가기
프로그래밍 언어/c(임베디드)

LSM/MSB , 리틀 엔디안 / 빅 엔디안

by [Akashic Records] 개발의선지자 2024. 7. 16.

※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할 수 있습니다.

    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.

 

LSB / MSB

LSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다.

MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다.

 

엔디안이란?

컴퓨터는 데이터를 메모리에 저장할 때, 바이트 단위로 저장한다.

컴퓨터가 저장하는 데이터(시스템 비트)는 32bits(4bytes)나 64bits(8bytes)로 구성한다.

따라서 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(byte order), 엔디안이라고 한다.

 

빅 엔디안(big endian)

낮은 주소에 데이터의 높은 바이트(MSB)부터 저장하는 방식

 

ex)

0x12345678(32bit) -> 이 정수는 아래와 같이 저장

 

낮은 주소(MSB)  : 0x12

                              0x34

                              0x56

높은 주소(LSB) :   0x78

 

리틀 엔디안(little endian)

낮은 주소에 데이터의 낮은 바이트(LSB)부터 저장하는 방식 

 

ex)

0x12345678(32bit) -> 이 정수는 아래와 같이 저장

 

낮은 주소(LSB)  :  0x12

                              0x34

                              0x56

높은 주소(MSB) :   0x78

 

 



리틀 엔디안 방식 : intel x86 계열 프로세서

빅 엔디안 방식  :  IBM, Motorora 프로세서

 

#include <stdio.h>

int main(void){

	int i;

    int test = 0x12345678;

    char* ptr = (char*)&test; // 1 바이트만을 가리키는 포인터를 생성함.

    for (i = 0; i < sizeof(int); i++)
    {

        printf("%x", ptr[i]); // 1 바이트씩 순서대로 그 값을 출력함.

    } 
	return 0;
}

 

출처 : 코딩의 시작, TCP School

'프로그래밍 언어 > c(임베디드)' 카테고리의 다른 글

가변인자 함수 + 디버깅 매크로  (0) 2024.08.16
구조체 & 공용체 [1]  (0) 2024.07.18
while문 사용법  (0) 2024.07.13
비트 마스크  (0) 2024.05.22
volatile 지시자  (0) 2024.05.08