강좌 & 팁
big endian, little endian
빅 엔디안과 리틀 엔디안은 메모리의 저장 방식 및 처리 방식에 따라 나뉘어 진다.
리틀 엔디안은 메모리의 높은 번지부터 저장 하는 방식이고 빅엔디안은 메모리의 낮은 번지부터 저장하는 방식이다
int A = 0x12345678;
주소 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
값 |
7 |
8 |
5 |
6 |
3 |
4 |
1 |
2 |
Little endian : end(78)의 주소값이
start(12)보다 작다.
<-> Big endian
다음의 예제를 통해 확인하여 보자
#include <stdio.h>
int main()
{
int inum = 0x12345678;
unsigned char *p;
p = (unsigned char*)&inum;
printf("%08X\n",inum);
printf("%p\n",&inum);
printf("%p\n",p);
printf("%02X\n",*p);
++p;
printf("%p\n",p);
printf("%02X\n",*p);
++p;
printf("%p\n",p);
printf("%02X\n",*p);
++p;
printf("%p\n",p);
printf("%02X\n",*p);
return 0;
}
12345678이 출력되는데 메모리에서는
12 | 34 | 56 | 78 | ||||||||
0x18 | 0x19 | 0x1a | 0x1b |
78 | 56 | 34 | 12 |
0x18 | 0x19 | 0x1a | 0x1b |