나무 숲

Big endian, Little endian 에 대해 본문

Career

Big endian, Little endian 에 대해

wood.forest 2017. 3. 18. 12:52

엔디언 endian 이란?


바이트를 배열하는 방법인 Byte order중의 하나이다. 

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

엔디언은 보통 큰 단위가 앞에 나오는 빅 엔디언(Big-endian)과 작은 단위가 앞에 나오는 리틀 엔디언(Little-endian)으로 나눌 수 있으며, 두 경우에 속하지 않거나 둘을 모두 지원하는 것을 미들 엔디언(Middle-endian)이라 부르기도 한다.




빅 엔디언(Big-endian)

큰 단위의 바이트가 앞에 나온다. 사람이 숫자를 쓰는 방법과 같다.

소프트웨어의 디버그를 편하게 해 준다.

네트워크에서는 주소를 빅 엔디언으로 쓰는데, 역사적으로 라우팅이 전화를 거는 식으로 접두 부호로 이루어졌기 때문이다. 이의 영향으로 많은 프로토콜과 몇몇 파일 포맷이 빅 엔디언을 사용하고 있다.


리틀 엔디언(Little-endian)

작은 단위의 바이트가 앞에 나온다.

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

대표적으로  x86 아키텍처가 리틀 엔디언을 쓰기 때문에, 오늘날 x86 아키텍처를 사용하는 대부분의 데스크톱 컴퓨터는 리틀 엔디언을 쓰며 이를 ‘인텔 포맷’이라 한다. 




아래의 그림은 4바이트 정수인 0x12345678을 저장하려고 할 때 저장되는 모습을 나타내었다.


- 앞에 나온다는 것은 더 낮은 메모리 주소에 위치한다는 것을 의미한다.

- 큰 단위/작은 단위는 Most Significant Byte/Least Significant Byte임을 의미한다.

- 더 높은 메모리 주소일수록 최근에 쌓은 것이라고 할 수 있다. (스택처럼, 메모리 사용을 연속적으로 할 때!!)












그 외


바이 엔디언(Bi-endian)

빅 엔디언과 리틀 엔디언 중 하나를 선택할 수 있도록 설계되어 있는 아키텍쳐를 말한다.

대표적으로 ARM, PowerPC, DEC 알파, MIPS, PA-RISC, IA-64 등이 성능 향상을 위해 사용한다. 


미들 엔디언(Middle-endian)

한 방향으로 순서가 정해져 있는 게 아니라 2바이트 또는 1바이트 단위로 빅/리틀 엔디언 중 서로 다른 순서를 사용하는 경우를 말한다. VAX와 ARM에서는 배정도 부동 소수점 실수를 미들 엔디언으로 저장하며, PDP-11에서는 32비트 정수를 미들 엔디언으로 저장하는데 이를 PDP 엔디언이라 부르기도 한다.













+ 유래


유래가 은근히 유명하다. 

엔디언이라는 단어는 조너선 스위프트의 《걸리버 여행기》에 나오는 소인국 릴리퍼트 이야기에서 달걀을 깰 때 뭉툭한 끝(big-end)을 먼저 깨는 사람들(빅 엔디언)과 뾰족한 끝(little-end)을 먼저 깨는 사람들(리틀 엔디언) 사이에 격론이 벌어진 데서 따온 것이다. 빅 엔디언과 리틀 엔디언 중 어느 것을 쓰느냐 하는 문제는 상황에 따라서 임의적이고, 따라서 종종 키보드 배틀의 대상이 되었다. 컴퓨터와 관련되어 엔디언이라는 말은 대니 코언(Danny Cohen)이 이런 플레임을 잠재우기 위해 1980년에 쓴 On Holy Wars and a Plea for Peace라는 글에서 유래했다.




-

https://ko.wikipedia.org/wiki/엔디언

728x90
반응형

'Career' 카테고리의 다른 글

MIT App Inventor 소개  (0) 2017.03.28
[인물] 다익스트라 Dijkstra  (1) 2017.03.19
그레이 코드 Gray Code?  (0) 2017.03.15
시스템에서 코드의 오류를 검사하는 방법들  (0) 2017.02.27
ROM (Read Only Memory)에 대해  (0) 2017.02.26
Comments