4.2.2 엔디언 호환성
여러 바이트로 이루어진 숫자를 저장할 때 시중의 모든 CPU가 같은 순서로 저장하는 것은 아니다. 어떤 플랫폼이 바이트를 어떤 순서로 저장하는지 그 방식을 일컬어 플랫폼의 엔디언(Endianness)이라 한다. 엔디언은 크게 리틀 엔디언(Little-endian), 빅 엔디언(Big-endian)으로 나뉜다. 리틀 엔디언 플랫폼에선 여러 바이트로 구성되는 숫자를 가장 작은 자리의 바이트부터 먼저 기재한다. 예를 들어 0x12345678을 값으로 하는 정수를 0x01000000 번지에 저장한다고 하면 그림 4-1처럼 된다.
▲ 그림 4-1 리틀 엔디언 0x12345678
최하위 바이트2 0x78이 메모리 앞부분에 저장되었다. 이 부분이 숫자에서 가장 ‘작은’ 부분이며 이 방식을 ‘리틀’ 엔디언이라 부르는 이유가 바로 이 때문이다. 리틀 엔디언 플랫폼으로는 인텔의 x86, x64, 애플의 iOS 계열 하드웨어 등이 있다.
빅 엔디언은 반대로 최상위 바이트3를 가장 먼저 저장한다. 같은 숫자를 같은 번지에 기록할 때 그림 4-2와 같이 된다.
▲ 그림 4-2 빅 엔디언 0x12345678
2 역주 The least significant byte, LSB로 줄여 쓴다.
3 역주 The most significant byte, MSB로 줄여 쓴다.