위키득계정 ↗
기술

엔디언

엔디언기술
영문명
Endianness
빅 엔디언
상위 바이트를 앞에 배치
리틀 엔디언
하위 바이트를 앞에 배치
주요 맥락
메모리, 파일 형식과 통신 규약
엔디언은 여러 바이트로 이루어진 값을 메모리나 파일에 어떤 순서로 배치하는지에 관한 규칙이다. 빅 엔디언은 큰 자리의 바이트를 먼저, 리틀 엔디언은 작은 자리의 바이트를 먼저 배치한다.

값과 저장 순서는 다르다

16진수 0x12345678을 네 바이트로 저장한다고 하자. 낮은 주소부터 12 34 56 78 순서로 두면 빅 엔디언이고 78 56 34 12로 두면 리틀 엔디언이다. 같은 값을 다른 순서로 배치하는 것이지 수학적인 값 자체가 달라지는 것은 아니다.

같은 바이트를 다르게 읽을 수 있다

저장한 순서와 다른 규칙으로 읽으면 엉뚱한 수를 얻을 수 있다. 파일이나 통신 메시지의 형식이 바이트 순서를 명시해야 하는 이유다. 프로세서의 기본 순서와 외부 형식의 순서가 반드시 같지는 않다.

문자 인코딩에서의 예

UTF-16처럼 코드 단위가 여러 바이트인 표현에는 바이트 순서가 문제가 된다. 반면 UTF-8은 한 바이트 단위로 정해진 순서를 사용하는 표현이므로 UTF-8의 다중 바이트열을 통째로 뒤집어 엔디언을 바꾸는 식으로 다루지 않는다.

무엇의 순서인지 명확하게

바이트 순서와 한 바이트 안의 비트 순서, 여러 필드의 배치는 별개의 규칙이다. 어떤 형식을 해석할 때는 정수의 크기와 부호, 바이트 순서와 정렬 조건을 함께 알아야 한다. 엔디언만 맞췄다고 파일 전체를 올바르게 읽을 수 있는 것은 아니다.

관련 문서

바이트 / 이진법 / 문자 인코딩 / 파일 형식