[컴퓨터 시스템] 6. 바이트 순서는 왜 값을 다르게 보이게 만들까
5편에서 같은 비트열을 어떤 규칙으로 읽느냐가 중요하다는 감각을 잡았다면, 이제는 멀티바이트 값이 메모리에 어떤 순서로 놓이는지 봐야 합니다. 바로 여기서 엔디안이 등장합니다.
엔디안은 비트가 뒤집히는 마법이 아니라, 여러 바이트로 이루어진 값을 메모리 주소 증가 방향에 어떻게 배치하느냐의 문제입니다. 이번 글은 그 과정을 실제 주소 흐름으로 따라가며 정리합니다.
- 엔디안이 정확히 무엇을 바꾸고 무엇은 바꾸지 않는지
- 4바이트 값 하나가 메모리에 놓이는 과정을 주소 흐름으로 보기
- big-endian과 little-endian을 비교표와 단계 흐름으로 이해하기
- 엔디안이 비트 순서와 다른 이유
- 네트워크, 파일 포맷, 메모리 덤프에서 엔디안이 왜 중요한지
1. 엔디안은 멀티바이트 값의 배치 규칙이다
엔디안을 처음 들으면 값 자체가 달라지는 현상처럼 느껴질 수 있습니다. 하지만 엔디안은 값의 수학적 의미를 바꾸는 것이 아니라, 그 값을 이루는 여러 바이트를 메모리 주소 순서에 어떻게 놓을지 정하는 규칙입니다.
즉 1바이트 값에는 엔디안이 거의 의미가 없고, 2바이트 이상으로 이루어진 값에서만 본격적으로 중요해집니다.
| 질문 | 엔디안이 관여하는가 | 설명 |
|---|---|---|
| 1바이트 값 저장 | 거의 아니다 | 한 칸뿐이라 순서 개념이 약하다 |
| 4바이트 정수 저장 | 그렇다 | 각 바이트를 어느 주소에 둘지 정해야 한다 |
| 비트 자체의 0/1 의미 | 아니다 | 엔디안은 바이트 배치 규칙이다 |
2. 4바이트 값을 메모리에 놓는 과정을 먼저 보자
예를 들어 0x12345678 이라는 4바이트 값을 생각해 봅시다. 값 자체는 같아도 메모리 주소 1000번부터 1003번까지 어떤 순서로 바이트를 놓느냐에 따라 눈에 보이는 모양이 달라집니다.
3. big-endian과 little-endian을 주소 흐름으로 비교해 보자
엔디안은 이름만 외우면 계속 헷갈립니다. 낮은 주소에서 높은 주소로 읽어 나갈 때 무엇이 먼저 보이는지로 생각하는 편이 훨씬 덜 흔들립니다.
| 주소 | big-endian | little-endian |
|---|---|---|
| 1000 | 12 | 78 |
| 1001 | 34 | 56 |
| 1002 | 56 | 34 |
| 1003 | 78 | 12 |
4. 엔디안은 비트 순서가 아니라 바이트 순서다
자주 생기는 오해 중 하나가 엔디안이 비트 순서를 거꾸로 바꾸는 것이라는 생각입니다. 하지만 엔디안은 바이트들 사이의 배치 문제이지, 한 바이트 안의 비트열을 뒤집는 규칙이 아닙니다.
이 차이를 놓치면 메모리 덤프나 네트워크 데이터를 읽을 때 엉뚱한 가정을 하게 됩니다.
| 오해 | 정확한 이해 |
|---|---|
| 엔디안은 비트가 뒤집히는 현상이다 | 엔디안은 바이트 배치 순서를 다루는 규칙이다 |
| 엔디안이 다르면 값 자체가 달라진다 | 값은 같고 메모리에서 보이는 바이트 순서가 다르다 |
| 1바이트 문자에도 엔디안 문제가 크다 | 멀티바이트 값에서 의미가 커진다 |
5. 이 감각이 실제로 필요한 장면
엔디안은 시험용 개념처럼 보이지만, 실제로는 네트워크 프로토콜, 파일 포맷, 바이너리 파싱, 디버거에서 메모리 보기, 다른 아키텍처 간 데이터 교환에서 계속 등장합니다.
예를 들어 네트워크 바이트 순서는 보통 big-endian을 기준으로 삼기 때문에, little-endian 머신에서 값을 그대로 보내면 해석이 어긋날 수 있습니다.
| 장면 | 왜 엔디안이 중요한가 |
|---|---|
| 네트워크 | 상대와 같은 바이트 순서 규약을 맞춰야 한다 |
| 파일 포맷 | 정해진 순서로 저장된 바이트를 올바르게 읽어야 한다 |
| 메모리 덤프/디버깅 | 보이는 바이트열을 값으로 다시 조립해야 한다 |
6. 비트 표현에서 한 단계 더 나아간 질문
5편이 '값을 어떤 규칙으로 읽는가'의 글이었다면, 이번 편은 '그 값이 여러 바이트로 나뉠 때 주소 공간에 어떻게 배치되는가'의 글입니다. 같은 비트 표현 공부라도 질문 수준이 한 단계 더 내려온 셈입니다.
이 감각은 이후 어셈블리와 네트워크, 메모리 덤프를 읽을 때 계속 재사용됩니다.
7. 직접 해볼 문제: 메모리 덤프를 값으로 다시 읽어 보자
이 문제는 이름 외우기보다 주소 순서 감각을 확인하는 데 목적이 있습니다.
이번 글에서 기억할 것
스스로 점검
다음 글 예고
다음 글에서는 정수보다 더 까다로운 실수 표현으로 넘어가, 왜 0.1 같은 값이 정확히 저장되지 않을 수 있는지 정리합니다.
'학습 자료 글 > 컴퓨터시스템' 카테고리의 다른 글
| 컴퓨터시스템 기초 8. 논리 게이트에서 CPU까지 어떤 연결이 생길까 (0) | 2026.03.31 |
|---|---|
| 컴퓨터시스템 기초 7. 왜 실수는 10진수처럼 정확하게 저장되지 않을까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 5. 데이터는 왜 결국 비트로 표현될까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 4. 디버거는 실행을 보는 창이다 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 3. 포인터와 메모리를 같이 이해해야 하는 이유 (0) | 2026.03.31 |