리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)
리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)은 컴퓨터가 메모리에 데이터를 저장하는 방법 두 가지를 말합니다.
컴퓨터가 메모리에 데이터를 저장할 때, 바이트(byte) 단위로 나누어 저장하게 됩니다.
하지만 데이터는 여러 바이트(int의 경우 4byte)로 구성되어 있기 때문에, 이 데이터를 각 주소에 나누어 저장하게 되는데, 이때 저장되는 바이트의 순서에 따라 리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)으로 나뉘게 됩니다.
빅 엔디안 (Big Endian)
빅 엔디안 방식은 데이터의 최상위 바이트(Most Significant Byte, MSB)가 가장 먼저 저장되는 방식입니다.
즉, 데이터의 최상위 바이트가 메모리의 가장 낮은 주소에 저장됩니다.
예를 들어, 0x12345678
을 저장한다고 하면 아래와 같은 방식으로 저장됩니다.
1
2
// 주소:0x00 0x01 0x02 0x03
// 값: 0x12 0x34 0x56 0x78
이 방식은 디버깅시 우리가 평소에 사용하는 선형 방식으로 볼 수 있으며, 읽고 바로 이해할 수 있습니다.
SPARC을 포함한 대부분의 RISC CPU 계열에서 이 방식으로 데이터를 저장합니다.
리틀 엔디안 (Little Endian)
리틀 엔디안 방식은 데이터의 최하위 바이트(Least Significant Byte, LSB)가 가장 먼저 저장되는 방식입니다.
즉, 데이터의 최하위 바이트가 메모리의 가장 낮은 주소에 저장됩니다.
예를 들어, 0x12345678
을 저장한다고 하면 아래와 같은 방식으로 저장됩니다.
1
2
// 주소:0x00 0x01 0x02 0x03
// 값: 0x78 0x56 0x34 0x12
이 방식은 대부분의 인텔 CPU 계열에서 사용하는 방식입니다.
실제로 visual studio로 디버깅을 하게 되면, 리틀 엔디안 방식으로 저장되어 있는 것을 확인 할 수 있습니다.