본문 바로가기
CS/기타

빅 엔디안과 리틀 엔디안을 직접 확인해보자

by alpacadabra 2023. 2. 4.

메모리는 바이트 단위로 주소를 할당하고 저장한다.

다만 CPU 아키텍쳐마다 바이트를 저장하는 순서가 다르고 이를 빅 엔디언과 리틀 엔디언이라는 명칭으로 구분하고 있다.

빅 엔디언은 큰 자릿수부터 저장하는 것으로, 우리가 평소 16진수를 읽는 순서와 동일하다.

그리고 리틀 엔디언은 그 반대로 이해할 수 있다.

왜 방식이 나뉘었는지를 논하자면 여러 이유가 있겠으나, 나는 간단히 빅 엔디언은 사람이 다루기 쉽고 리틀 엔디언은 머신이 다루기 쉽기 때문으로 이해하고 있다.

 


빅 엔디언과 리틀 엔디언

 

위 사진처럼 0x12345678을 저장하는 경우, 빅 엔디안은 읽는 순서 그대로 저장되므로 사람이 다루기가 쉽다.

그러나 리틀 엔디안은 오른쪽부터 읽어야하므로 조금 불편하게 느껴진다.

그래도 머신 입장에서는 리틀 엔디안과 같은 형태가 가산 등의 작업에서 더 유리하다고 한다.

 


빅 엔디안과 리틀 엔디안이 진짜로 저렇게 되는지 확인하고 싶다면, 진짜로 메모리를 열어서 확인해보면 된다.

나는 VS의 디버거를 이용해 확인해보았다.

 

 

int n을 0x12345678로 선언하고 중단점을 삽입한다.

그리고 디버그 > 창 > 메모리를 열어 주소에 &n을 입력한다.

 

 

그러면 n의 주소에 들어있는 값들을 확인할 수 있게 된다.

이제 F11을 눌러 다음 줄로 이동해보자.

 

 

오른쪽 메모리 창에서 4개의 바이트가 빨갛게 변경된 것을 볼 수 있다.

이는 값이 변경되었다는 뜻으로, 잘 살펴보면 0x12345678이 리틀 엔디언으로 저장되었음을 알 수 있다.

이제 F11을 한번 더 눌러 출력까지 해보도록 하자.

 

 

그러면 리틀 엔디언이 아닌 빅 엔디언으로 출력되는 것을 볼 수 있다.

당연한 얘기지만, 입출력이라는 인터페이스가 사람에게 불편한 방식이어서는 안되기 때문이다.

'CS > 기타' 카테고리의 다른 글

정지 문제(Halting problem)의 간단한 증명  (0) 2023.04.28
부동소수점의 정밀도 문제에 대하여  (0) 2022.10.28

댓글