본문 바로가기

시스템/개념

리틀 엔디언 && 미들엔디언 && 빅 엔디언

엔디언(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