Little Endian vs Big Endian
Updated:
엔디언(Endianness)
엔디언은 컴퓨터 메모리와 같이 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법 특히 바이트 순서라한다.
우선 리틀 엔디안은 주로 인텔 게열의 CPU에서 이용하는 바이트 오더링 방식으로, 가장 낮은 바이트부터 정렬하는 방식이고,
빅 엔디안은 주로 AMD계열의 CPU에서 이용하는 방식으로, 가장 높은 바이트부터 정렬하며, 사람이 읽기 좋은 정렬 방식이다.
장단점
빅엔디언은 소프트웨어 디버깅을 편하게 해줍니다. 사람이 숫자를 읽고 쓰는 방법과 같기 때문에 디버깅 과정에서 메모리 값을 보기 편합니다.
예를들어, 위 데이터는 0A 0B 0C 0D로 표현됩니다.
리틀 엔디언은 메모리에 저장된 값의 하위 바이트들만 사용할 때 별도의 계산이 필요가 없습니다. 보통 변수의 첫 바이트를 그 변수의 주소로 삼기 때문에 이런 성질이 장점이 됩니다.
또한, 가산기 덧셈을 하는 과정에서 LSB로 시작하여 자리 올림을 계산해야 하므로, 첫 번째 바이트가 LSB인 리틀엔디언에서는 가산기 설계가 더 단순해집니다.
단, 네트워크를 통해 전송될 때는 엔디안 방식의 차이에 주의해야 합니다. 네트워크 데이터 통신에서는 빅엔디안을 따르도록해야합니다.
참고로 아래는 리틀/빅 엔디안을 사용하는 시스템입니다.
리틀 엔디안
- Linux on x86, x64, Alpha and Itanium
- Mac OS X on x86, x64
- OpenVMS on VAX, Alpha and Itanium
- Solaris on x86, x64, PowerPC
- Tru64 UNIX on Alpha
- Windows on x86, x64 and Itanium
빅 엔디안
- AIX on POWER
- AmigaOS on PowerPC and 680x0
- HP-UX on Itanium and PA-RISC
- Linux on MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, and z/Architecture
- Mac OS on PowerPC and 680x0 Mac OS X on PowerPC
- MVS and DOS/VSE on ESA/390, and z/VSE and z/OS on z/Architecture
- Solaris on SPARC
Leave a comment