컴퓨터 과학(CS)
리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)
kchs0529
2025. 3. 25. 16:45
요즘 회사에서 프로토콜 문서를 보다 보니 리틀 엔디안 형식으로 되어 있는 메세지들이 많이 있었다.
처음 주어진 문서를 보고 개발을 진행할 때 아무런 생각없이 빅 엔디안방식으로 값들을 읽어왔고 문제가 생겼었다.
그래서 리틀 엔디안과 빅 엔디안에 대해 정리해보게 되었다.
컴퓨터 시스템에서 데이터를 처리하는 방식은 매우 다양하지만, 그 중에서도 엔디안 문제는 시스템 간의 데이터 호환성에 큰 영향을 미친다. 엔디안은 데이터를 메모리나 네트워크 상에서 저장하거나 전송할 때 바이트 순서를 어떻게 배열할 것인지를 결정하는 개념이다
1. 빅 엔디안 (Big Endian)
빅 엔디안에서는 **가장 중요한 바이트 (MSB, Most Significant Byte)**가 가장 낮은 주소에 저장됩니다. 즉, 데이터를 메모리에 저장할 때 가장 큰 자릿수부터 저장합니다. 예를 들어, 4바이트 정수 0x12345678이 있을 때, 이를 빅 엔디안 방식으로 저장하면 다음과 같습니다.
2. 리틀 엔디안(Little Endian)
리틀 엔디안에서는 **가장 중요한 바이트 (MSB)**가 가장 높은 주소에 저장됩니다. 즉, 데이터를 메모리에 저장할 때 가장 작은 자릿수부터 저장합니다. 예를 들어, 4바이트 정수 0x12345678을 리틀 엔디안 방식으로 저장하면 다음과 같습니다.
3. 빅 엔디안 vs 리틀 엔디안
구분 | 빅 엔디안 (Big Endian) | |
정의 | 가장 큰 자릿수 바이트가 첫 번째(낮은 주소)에 저장됨. | 가장 작은 자릿수 바이트가 첫 번째(낮은 주소)에 저장됨. |
예시 | 0x12345678 → 12 34 56 78 (주소: 낮은 주소부터) | 0x12345678 → 78 56 34 12 (주소: 낮은 주소부터) |
사용 예시 | 네트워크 프로토콜(HTTP, TCP/IP 등)에서 사용. | x86 아키텍처 등 대부분의 개인 컴퓨터에서 사용. |
호환성 | 시스템 간 데이터 호환성 문제가 발생할 수 있음. | 대부분의 현대 PC 시스템에서 사용, Windows 시스템에서 주로 사용. |
4. 왜 엔디안이 중요한가?
엔디안은 데이터 전송이나 파일 포맷에서 중요한 역할을 합니다. 예를 들어, 네트워크에서 데이터를 전송할 때 두 시스템이 다른 엔디안 방식을 사용하면, 서로 데이터를 해석하는 방식이 달라져 잘못된 결과가 나올 수 있습니다. 이를 해결하기 위해 네트워크 바이트 순서(Big Endian)를 사용하며, 전송되는 데이터의 엔디안을 맞추는 것이 중요합니다.