본문 바로가기
컴퓨터 관련

빅엔디언(Big Endian) 리틀엔디언(Little Endian) 차이

by _BlankSpace 2017. 12. 15.

 

 1. 엔디언(Endianness) 이란? 


컴퓨터를 전공하는 사람이라면, 한번 쯤은 들어볼 법한, 아니, 당연히 들어야 하는 용어라고 할 수 있다.


엔디언이란 컴퓨터의 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻합니다.

특히, 바이트를 배열하는 방법을 바이트 순서 (Byte order) 이라고 합니다.


엔디언은 크게 3가지로 나눌 수 있습니다.

1. 빅 엔디안(Big-endian) : 큰 단위가 앞에 나오는 것을 말함.

2. 리틀 엔디안(Little-endian) : 작은 단위가 앞에 나오는 것을 말함.

3. 미들 엔디안(Middle-endian) : 두 경우에 속하지 않거나, 둘을 모두 지원하는 것을 말함.


 2. 바이트 순서에 따른 엔디안

1번에서 말한 것처럼, 바이트 순서에 따라서 빅 엔디안과 리틀 엔디안으로 나눌 수 있다.


빅 엔디안은 보통 사람이 숫자를 쓰는 방법이라고 생각하면 된다.

큰 단위의 바이트가 앞에 오는 것을 말한다.

[참고 자료 : 위키백과]



리틀 엔디안은 작은 단위의 바이트가 앞에 오는 것을 말한다.


[참고 자료 : 위키백과]


미들 엔디언은 2바이트 단위와 1바이트 단위로 서로 다른 순서를 사용한다.


다음 표로 엔디안을 비교해보자.


종류 

0x1234의 표현 방식 

0x1234567의 표현 방식 

 빅 엔디안

12 34 

12 34 56 78 

 리틀 엔디안

 34 12

78 56 34 12 

 미들 엔디안

34 12 56 78
또는
56 78 12 34 


 3. 장단점

빅 엔디안 : 사람이 숫자를 읽고 쓰는 방법과 같아서 디버깅 과정에서 메모리의 값을 보는 데 편리하다.

    예를 들면, 0x51236412은 빅 엔디언으로 51 23 64 12 로 표현할 수 있다.

    즉, 메모리에 위에서부터 아래로 순서대로 들어간다고 생각하면 되므로, 사람이 생각하기에는 쉽다.

리틀 엔디안 : 메모리에 저장된 값의 하위 바이트들만 사용할 때, 별도의 계산이 필요 없다.

                  예를 들면, 0x2A를 리틀 엔디언으로 표현하면 2A 00 00 00 이 된다.

 이것은 앞의 두 바이트 또는 한 바이트만 떼어내면 하위 16비트 또는 8비트를 바로 얻을 수 있다.

 반면에, 빅 엔디언에서는 하위 16비트나 8비트 값을 얻으려면 변수 주소에 2바이트 또는 3바이트를 더해야 하는 번거로움이 있다.


댓글