이 글에서는 리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)에 대해서 설명합니다.
Table Of Contents
리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)
리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)은 컴퓨터 메모리에 다중 바이트 데이터를 저장하는 방식을 말합니다. 이는 바이트 순서(Byte Order)를 나타내며, 주로 64비트 변수와 32비트 변수의 바이트 순서를 설명하는 데 사용됩니다.
- 리틀 엔디안 (Little Endian): 리틀 엔디안에서는 가장 작은 주소에 가장 낮은 유효 비트를 놓습니다. 즉, 변수의 가장 작은 바이트가 가장 낮은 주소에 저장되고, 가장 큰 바이트가 가장 높은 주소에 저장됩니다.
- 빅 엔디안 (Big Endian): 빅 엔디안에서는 가장 큰 주소에 가장 낮은 유효 비트를 놓습니다. 즉, 변수의 가장 큰 바이트가 가장 낮은 주소에 저장되고, 가장 작은 바이트가 가장 높은 주소에 저장됩니다.
64비트 변수의 예제를 통해 설명하겠습니다. 64비트 변수는 8바이트를 사용하므로 리틀 엔디안과 빅 엔디안에서의 저장 순서가 다릅니다.
예제 코드:
#include <stdio.h>
int main() {
// 64비트 변수
uint64_t num64 = 0x1122334455667788;
// 32비트 변수
uint32_t num32 = 0xAABBCCDD;
// 64비트 변수 출력
unsigned char *ptr64 = (unsigned char *)&num64;
printf("64비트 변수: 0x");
for (int i = 0; i < sizeof(num64); i++) {
printf("%02X", ptr64[i]);
}
printf("\n");
// 32비트 변수 출력
unsigned char *ptr32 = (unsigned char *)&num32;
printf("32비트 변수: 0x");
for (int i = 0; i < sizeof(num32); i++) {
printf("%02X", ptr32[i]);
}
printf("\n");
return 0;
}
이 코드에서는 64비트 변수 num64
와 32비트 변수 num32
를 각각 리틀 엔디안 방식과 빅 엔디안 방식으로 출력합니다.
결과:
리틀 엔디안에서는 가장 작은 바이트가 가장 낮은 주소에 저장되므로 64비트 변수 num64
의 출력은 다음과 같습니다.
64비트 변수: 88 77 66 55 44 33 22 11
빅 엔디안에서는 가장 큰 바이트가 가장 낮은 주소에 저장되므로 64비트 변수 num64
의 출력은 다음과 같습니다.
64비트 변수: 11 22 33 44 55 66 77 88
32비트 변수 num32
도 동일하게 리틀 엔디안과 빅 엔디안 방식으로 출력됩니다.
less
32비트 변수: DD CC BB AA
리틀 엔디안과 빅 엔디안은 데이터 저장 방식에 따라 서로 다른 결과를 나타내므로, 이를 고려하여 플랫폼 간 데이터 교환 시 주의해야 합니다.
'IT' 카테고리의 다른 글
gitignore 파일로 특정 파일또는 디렉토리 제외 혹은 무시하기 (0) | 2024.01.21 |
---|---|
Github 무료 제한 및 정책 요약 (0) | 2024.01.21 |
Window(윈도우)에서 Ubuntu(우분투)로 원격데스크톱 연결하기 (0) | 2024.01.21 |
우분투에 한글입력기 설치하기 (22.04) (0) | 2024.01.21 |
우분투 화면 잠금 기능 끄기 - 원격 데스크톱 (0) | 2024.01.21 |