빅엔디안과 리틀엔디안

바이트 오더라하여 바이트의 정렬 순서를 이야기합니다.

프로그래밍 하는 과정에서 많이 헷갈리기도 하는데요.

리틀엔디안부터 알아보도록 하겠습니다.



리틀엔디안 (Little Endian)

리틀엔디안은 주로 인텔 프로세스에서 사용하는 바이트오더 입니다.

리틀이라는 말 처럼 메모리 시작 주소를 하위 바이트부터 기록한다는 뜻입니다.

 - 빅엔디안은 그럼 반대겠죠?



리틀 엔디안의 바이트 오더 기록 순서입니다.

레지스터에 기록된 내용을 하위바이트부터 메모리에 넣는 것을 보실 수 있습니다.

 - 오른쪽 -> 왼쪽의 순서로 읽습니다.


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

 - 앞의 두 바이트나 한 바이트를 떼어내면 바로 하위 16비트나 8비트를 얻을 수 있습니다.

 - 반면, 32비티 빅 엔디안 환경에서는 하위 16비트나 8비트 값을 얻기 위해서는 변수 주소에 2 혹은 3바이트를 더해야 합니다.

 - 이런 점들 때문에 빅엔디안 환경에서 작업을 했던 프로그래머들은 리틀 엔디안 환경에서 실수를 하기도 합니다.

 - 최근 프로세서들은 여러개의 바이트를 동시에 읽어들여 동시에 덧셈을 수행하는 구조를 갖고있어서 사실상 차이가 없기도 합니다.



빅엔디안 (Big Endian)

빅엔디안은 리틀엔디안의 반대로 Unix 시스템인 RISC 프로세서 계열에서 사용하는 바이트 오더입니다.

리틀엔디안과는 반대로 메모리 시작 주소를 상위 바이트부터 기록한다는 뜻입니다.



빅 엔디안의 바이트 오더 기록 순서입니다.

리틀 엔디안과는 반대로 기록된 내용을 상위바이트부터 메모리에 넣는 것을 보실 수 있습니다.

 - 왼쪽 -> 오른쪽의 순서로 읽습니다.


빅엔디안의 경우에는 사람이 글을 읽는 순서와 같기 때문에 디버깅이 수월하다는 장점이 있습니다.


출처 : http://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8

Posted by 긍정왕오킹