빅엔디안(Big Endian)과 리틀엔디안(Little Endian)

아몬드봉봉·2023년 11월 13일

운영체제

목록 보기
1/3

CPU가 메모리에 데이터를 저장할 때 어떤 순서로 저장하는가에 따라서 빅엔디안과 리틀엔디안으로 나뉘게 된다.

엔디안(Endian)

컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻함. 바이트(byte)를 배열하는 방법을 바이트 순서(byte order)라 한다. 엔디안(Endian)은 보통 큰 단위가 앞에 나오는 빅엔디안(Big Endian)과 작은 단위가 앞에 나오는 리틀엔디안(Little Endian)으로 나눌 수 있다.

바이트 저장 순서(byte order)

컴퓨터는 데이터를 메모리에 저장할 때 바이트(byte) 단위로 나눠서 저장한다. 컴퓨터가 저장하는 데이터는 대게 32비트(4바이트)나 64비트(8바이트)로 구성된다. 이렇게 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(byte order)라고 한다.

빅 엔디안(Big Endian)

* 낮은 주소에 데이터의 높은 바이트(MSB, MostSignufucant Bit)부터 자장하는 방식이다. * 그래서 메모리에 저장된 순서대로 읽을 수 있으며, 이해하기 쉽다는 장점이 있다. * SPARC을 포함한 대부분의 RISC CPU 계열에서는 이 방식으로 데이터를 저장합니다. * 소프트웨어의 디버그를 편하게 해주는 경향이 있다. 사람이 숫자를 읽고 쓰는 방법과 같기 때문에 디버깅 과정에서 메모리의 값을 보기 편하다.

예를 들어 다음과 같이 저장할 32비트 크기의 정수가 있다고 가정하자.

0x12345678

이 정수는 각각 다음과 같이 1바이트값 4개로 구성된다.

0x12, 0x34, 0x56, 0x78

위 4개의 1바이트 값을 빅엔디안 방식으로 저장하면 다음 그림과 같이 저장된다.


리틀 엔디안(Little Endian)

* 낮은 주소에 데이터의 낮은 바이트(LSB, Least Significant Bit)부터 저장하는 방식이다. * 대부분의 인텔 CPU 계열에서 이 방식으로 데이터를 저장한다. * 메모리에 저장된 값의 하위 바이트들만 사용할 때 별도의 계산이 필요 없다.

위와 같이 정수"0x12345678"를 리틀 에디안 방식으로 저장한다면

0x78, 0x56, 0x34, 0x12


빅엔디언과 리틀엔디언

두 방법 중 어느 한 쪽이 다른 쪽과 비교해 압도적으로 좋거나 나쁘지는 않다고 알려져 있으며, 두 방법은 서로 다른 여러 아키텍처에서 서로 공존하고 있다. 그러나 x86 아키텍처가 리틀 엔디언을 쓰기 때문에, 오늘날 x86 아키텍처를 사용하는 대부분의 데스크톱 컴퓨터는 리틀 엔디언을 쓰며 이를 인텔 포맷이라 한다. 거꾸로 네트워크에서는 주소를 빅 엔디언으로 쓰는데, 역사적으로 라우팅이 전화를 거는 식으로 접두 부호로 이루어졌기 때문이다. 이의 영향으로 많은 프로토콜과 몇몇 파일 포맷이 빅 엔디언을 사용하고 있다. 모토로라 프로세서들은 일반적으로 빅 엔디언을 사용하며, ARM 프로세서들은 성능 향상을 위해 빅 엔디언과 리틀 엔디언을 선택할 수 있도록 되어 있다.

물리적으로 데이터를 조작하거나 산술 연산을 수행할 때에는 리틀 엔디안 방식이 더 효율적이다.
하지만 데이터의 각 바이트를 배열처럼 취급할 때에는 빅 엔디안 방식이 더 적합하다.

현재 우리가 사용하는 대부분의 시스템은 인텔 기반의 윈도우이므로 리틀 엔디안 방식을 사용하고 있을 것이다.
하지만 네트워크를 통해 데이터를 전송할 때에는 빅 엔디안 방식이 사용된다.

가산기가 덧셈을 하는 과정은 LSB로부터 시작하여 자리 올림을 계산해야 하므로, 첫 번째 바이트가 LSB인 리틀 엔디안에서 가산기 설계가 조금 더 단순하다. 빅 엔디안에서 가신기가 덧셈을 할 때 마지막 바이트로부터 시작하여 첫 번째 바이트가 역방향으로 잔행해야 한다.

ARM

임베디드 기기에 많이 사용되는 RISC 프로세서이다. 1983년 컴퓨터과학자 소피 윌슨과 프티브 퍼버를 주축으로 개발을 진행했다. 저전력을 사용하도록 설계하여 ARM CPU는 모바일 시장 및 실글 보드 컴퓨터로 불리는 개인용 컴퓨터에서 뚜력한 강세를 보인다.


출처
위키백과
TCPSchool
https://duzi077.tistory.com/201
https://code-lab1.tistory.com/179

profile
성장을 즐기는 백엔드 자바 개발자

0개의 댓글