컴퓨터는 데이터를 메모리에 저장할 때 byte 단위로 저장한다. 컴퓨터가 저장하는 데이터는 보통 32 bits(4 bytes)나 64 bits(8 bytes)로 구성되는데 연속되는 바이트를 순서대로 저장해야 하며, 바이트가 저장되는 순서(byte order)에 따라 크게 두 가지로 나뉜다.
1. Little-endian
낮은 주소에 낮은 바이트(LBS, Least Significant Bit)부터 저장
대부분의 Intel CPU 계열에서 사용
- 연산의 효율성
예를 들어 두 숫자를 더한다고 가정하면 하위 바이트부터 시작하여 carry가 발생할 경우 다음 바이트로 넘어가는 식으로 진행이 된다. Little-endian의 경우 하위 바이트가 메모리의 첫 번째 위치에 있으므로 프로세서가 순차적으로 계산하기에 유리하다. - 확장성 용이
16비트 숫자를 32비트로 확장하려면, Little 엔디안에서는 단순히 상위 2바이트를 0으로 채우고, 하위 2바이트에 원래 숫자를 그대로 복사하면 되므로 별도의 비트 이동이나 추가 연산이 필요하지 않아 처리 속도가 빠르다.
2. Big-endian
낮은 주소에 높은 바이트(MBS, Most Significant Bit)부터 저장
SPARC을 포함한 대부분의 RISC CPU 계열에서 사용
- 사람이 이해하기 쉬운 순서
상위 바이트가 낮은 주소부터 순차적으로 저장되어 우리가 일반적으로 숫자를 사용하는 선형 방식이다. 메모리에 저장된 순서 그대로 데이터를 읽을 수 있어 이해하기 쉽다. - 네트워크 전송에서의 일관성
네트워크 프로토콜은 보통 Big-endian 방식을 사용하는데 이는 데이터의 크기와 상관없이 항상 상위 바이트부터 전송하기 때문에, 서로 다른 시스템 간에 데이터를 주고받을 때 일관성이 유지된다. 배열처럼 연속된 데이터 블록을 전송할 때 이 순서가 유지되어야 하는 경우 유리하다.
바이트 저장 순서 확인
관련 함수
1024
= 2^10
= 2^2 x 2^4 x 2^4
=> 0x400
= 0x0400 (2byte 배열로 출력하라고 했으므로)
Big-endian의 경우 상위 비트부터 두 개씩 0x04 0x00
Little-endian의 경우 하위 비트부터 두 개씩 0x00 0x04
'기타' 카테고리의 다른 글
ASCII, Unicode (0) | 2024.08.10 |
---|