엔디언(Endianness)은 컴퓨터 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다.

엔디언은 보통 큰 단위가 앞에 나오는 빅 엔디언(Big-endian)과 작은 단위가 앞에 나오는 리틀 엔디언(Little-endian)으로 나눌 수 있다. 빅 엔디언과 리틀 엔디언을 선택할 수 있는 아키텍처는 바이 엔디언(Bi-endian)이라 부르며, 두 경우에 속하지 않거나 둘을 모두 지원하는 것을 미들 엔디언(Middle-endian)이라 부르기도 한다.

 

1. Big-endian (빅 엔디언)

12 34 56 78

현실세계와 마찬가지로 큰 단위가 앞에 온다. 따라서 읽기가 쉬워 디버깅 하기 좋다.

네트워크 통신, 해시, MIPS, SPARK, TI, ... 등이 사용한다.

 

 

2. Little-endian (리틀 엔디언)

78 56 34 12

현실세계와 반대로 2자리씩 끊어서 큰 단위가 뒤로 가고 작은 단위가 앞에 온다.

Intel, AMD가 사용한다. x86 아키텍처가 사용해서 '인텔 포맷'이라 부르기도 한다.

 

3. Bi-endian (바이 엔디언)

빅 엔디언리틀 엔디언선택할 수 있도록 아키텍처가 설계되었다.

ARM, PowerPC, MIPS, DEC 알파, PA-RISC, IA-64 등이 있다.

 

4. Middle-endian (미들 엔디언)

바이 엔디언과 다른 점은 바이 엔디언은 아키텍처가 빅 엔디언과 리틀 엔디언을 모두 지원하지만 둘 중 하나를 선택해서 사용하는 것이고, 미들 엔디언은 하나로 정해진게 아니고 두 가지를 혼용하는 것이다. 예를 들면 32비트 정수가 2바이트 단위로는 빅 엔디언이고, 그 안에서 1바이트 단위로는 리틀 엔디언이라던가 하는 경우가 있다.

과거 PDP라는 컴퓨터가 사용하던 방식으로 'PDP 포맷'이라 부르기도 한다.

 

 

뭐 굳이 비유를 들자면 빅 엔디언을 사자, 리틀 엔디언을 뱀이라 하면 바이 엔디언은 사자나 뱀 둘 중 하나를 선택하는거고, 미들 엔지언은 몸통은 사자, 꼬리는 뱀인 키메라 같은거랄까...;;

+ Recent posts