[엔디언] 엔디언(Endianness)이란?

 

개발에 입문할 때 기초 개념인 엔디언, 복습할 겸 내용을 정리해보겠다.

먼저 요약하자면 컴퓨터 시스템의 메모리와 같은 데이터 구조 내에서 다중 바이트 데이터의 바이트 순서를 나타내는 용어로 데이터가 바이트 단위로 나누어서 메모리에 저장될 때 그 순서가 엔디언에 의해 결정된다.


엔디언의 종류

엔디언에는 두 가지 종류가 있다

빅 엔디언(Big Endian): 가장 중요한 바이트(Most Significant Byte, MSB)가 메모리의 가장 낮은 주소에 위치한다. 예를 들어, 0x12345678의 경우 0x12가 가장 낮은 주소에 위치한다.

 

리틀 엔디언(Little Endian): 가장 중요하지 않은 바이트(Least Significant Byte, LSB)가 메모리의 가장 낮은 주소에 위치합니다. 동일한 예에서 0x78이 가장 낮은 주소에 위치한다.



1) 가장 상위 바이트(Most Significant Byte, MSB)는 멀티바이트 숫자에서 가장 중요한 바이트를 말한다.

2) MSB 바이트는 그 값이 가장 큰 가중치를 가진다.
 ex) 16진수로 표현된 4바이트(32비트) 숫자 0x12345678에서 MSB -> 0x12


3) 숫자를 다룰 때 비트의 가치는 위치에 따라 결정되며 가장 오른쪽에 있는 비트는 "가장 하위 비트(Least Significant Bit, LSB)"로,그 값은 2의 0제곱, 즉 1의 가치를 가진다.

4)왼쪽으로 한 칸씩 옮길 때마다 그 비트의 가치는 2의 거듭제곱만큼 증가하며 가장 왼쪽에 있는 비트는 그 숫자에서 가장 큰 가치를 가지고 있으며, 이를 "가장 상위 비트"라고 부르며 이 비트가 포함된 바이트를 "가장 상위 바이트"라고 말한다.

5)멀티바이트 숫자에서 MSB는 숫자의 크기를 가장 크게 결정한다.
ex) 0x12345678에서 0x12를 변경하면 숫자의 전체 크기가 크게 달라지지만, LSB인 0x78을 변경해도 전체 크기는 상대적으로 변함이 적다

6)빅 엔디언 방식에서는 이 MSB가 메모리의 가장 낮은 주소에 위치하고, 리틀 엔디언 방식에서는 LSB가 가장 낮은 주소에 위치한다.

7)엔디언(Endianness) 은  시스템간 데이터 교환, 파일 포맷, 프로그램 소프트 개발, 하드웨어 설계 및 디버깅 , 다중연산
  다중 바이트 연산 , 크로스 -플랫폼 개발에 사용되며 매우 중요한 개념이다.