Byte Order(바이트 오더)란 메모리에 바이트가 저장되는 순서를 의미합니다.
바이트 오더에는 크게 Big Endian과 Little Endian 방식이 존재하며 가장처음 만들어진 Big Endian은 다양한 프로토콜의 표준으로 사용되고 있습니다.
이 두가지 바이트 오더에 대한 간략한 설명과 장점과 단점을 정리했습니다.
1. 빅 엔디안(Big Endian)
낮은 주소에 데이터의 높은 바이트(MSB, Most Significant Bit) 부터 저장하는 방식입니다.
SPARC를 포함한 대부분의 RISC CPU 계열에서는 해당 방식으로 데이터를 저장합니다.
Big Endian
장점
- 이 방식은 평소 우리가 숫자를 사용하는 선형 방식과 같은 방식이기 때문에
이해하기 쉽다
는 특징을 갖고 있습니다. 숫자의 크기를 비교하기에 유리
합니다. 높은 자리수가 메모리 가장 처음에 위치하기 때문에 우리가 평상시 두 수의 크기를 비교할 때 높은 자릿수 부터 비교하듯 두 수의 크기를 비교할 때 큰수부터 비교하기 때문입니다.
단점
- 높은 자리수부터 접근하기 때문에 연산의 속도가 캐리값의 처리로 인해 리틀엔디안에 비해 느립니다.
2. 리틀 엔디안(Little Endian)
낮은 주소에 데이터의 낮은 바이트(LSB, Least Significant Bit)부터 저장하는 방식입니다.
대부분의 인텔 CPU 계열에서는 이 방식으로 데이터를 저장합니다.
Little Endian
장점
산술 연산에 유리
합니다. 두 수를 연산할때 작은 자리수 부터 메모리에 저장 되는 구조상 우리가 평상시 작은 자리수부터 올림 해서 계산하듯 Carry 처리에 대한 이점이 있기 때문입니다.
단점
- 우리가 숫자를 사용하는 선형 방식과 반대로 거꾸로 읽어야 하기 때문에
디버깅시 불편한 점이 존재
합니다.
빅 엔디안 VS 리틀 엔디안?
두 바이트오더 방식에 대한 장점과 단점이 있지만 다양한 상황이 존재하기 때문에 어느 방식이 유리하다고 단정 짓기는 어렵습니다.
물리적으로 데이터를 조작하거나 산술 연산을 수행할 때에는 리틀 엔디안 방식이 효율적 입니다.
하지만 두 수의 크기를 비교하거나 데이터의 바이트를 배열처럼 취급할 때에는 빅 엔디안 방식이 더 적합합니다.
현재 대부분의 데스크탑, 노트북 기기들은 인텔 기반으로 리틀 엔디안 방식을 사용하고 있습니다. 하지만 네트워크를 통해 데이터를 전송할 때에는 빅 엔디안 방식을 사용합니다.
3. 네트워크 바이트 오더
TCP, UDP, IPv4, IPv6과 같은 많은 프로토콜들은 데이터를 전송할 때 빅엔디안 방식을 사용
합니다.
따라서, intel기반의 little endian 컴퓨터와 ibm기반의 big endian 컴퓨터가 네트워크상 데이터를 주고 받을때 엔디안에 따른 차이를 없애기 위하여 Little Endian을 Big Endian으로 변환 해주는 과정이 필요한데, 대부분의 프로토콜에서는 이러한 엔디안 처리가 구현이 되어있습니다.