엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 배열하는 방법은 바이트 크기를 사용해서 배열한다.
엔디언의 종류
엔디언은 크게
- 빅엔디언
- 미들엔디언
- 리틀엔디언
이 있다.
빅엔디언은 큰 바이트가 앞으로, 리틀엔디언은 그 반대인 작은 바이트가 앞으로, 미들엔디언은 두개를 다 가지고 있거나 둘다 속하지 않은 엔디언이다.
예시
어떤 값 0x12345678을 대입할 때 (한 주소에 2바이트 씩 저장)
1. 빅엔디언
주소값 | 0x001 | 0x002 | 0x003 | 0x004 |
데이터 | 0x12 | 0x34 | 0x56 | 0x78 |
주소값이 오른 쪽으로 증가할 때 데이터 0x12345678의 값이 큰 바이트 순서대로,
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 |
즉 앞의 두 바이트가 크므로 0x12가 주소 0x001에 들어가고, 0x002에는 그 다음으로 큰 0x34이런식으로 들어가게 된다.
2. 리틀엔디언
주소값 | 0x001 | 0x002 | 0x003 | 0x004 |
데이터 | 0x78 | 0x56 | 0x34 | 0x12 |
주소값이 오른쪽으로 증가할 때 데이터 0x12345678의 값이 작은 바이트 순서대로,
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 |
즉 뒤의 두 바이트가 작으므로 0x78가 주소 0x001에 들어가고, 0x002에는 그 다음으로 작은 0x56이런식으로 들어가게 된다.
3.미들엔디언
주소값 | 0x001 | 0x002 | 0x003 | 0x004 |
데이터 | 34 | 12 | 78 | 56 |
OR
주소값 | 0x001 | 0x002 | 0x003 | 0x004 |
데이터 | 56 | 78 | 12 | 34 |
위의 경우엔 빅 엔디언으로 먼저 12 34 56 78 이런식으로 저장한 후에 두개 씩 리틀엔디언으로 변환해서
34 12 78 56 이런식으로 된것 같고, 밑의 경우엔 먼저 리틀엔디언으로 저장을한 후,
78 56 34 12 에서 빅 엔디언으로 56 78 12 34로 저장을 한것 같다.
출처 및 참고 : 위키백과
'시스템 > 개념' 카테고리의 다른 글
절대 경로, 상대 경로 (0) | 2021.10.23 |
---|---|
랜섬웨어란? (0) | 2021.08.04 |
컴퓨터 메모리 구조-1 (0) | 2021.04.09 |