04
21

바이트, 바이트 순서

8비트든 64비트든, 컴퓨터는 값을 8비트의 최소 단위로 쪼개서 저장합니다. 이 데이터의 한 묶음을 1바이트(Byte)라고 합니다. 현대 컴퓨터는 1바이트가 8비트인 것이 사실상의 표준입니다. 1바이트를 알아보기 쉽게 표시하기 위해, 8자리 2진수를 4자리씩 묶어서 2자리 16진수로 표시합니다.

 

바이트로 쪼갠 숫자를 메모리에 다시 저장할 때 저장하는 순서를 바이트 순서(Byte Order)라고 합니다. 바이트 순서는 리틀 엔디언과 빅 엔디언이 많이 쓰이고, 둘이 섞여 있거나 둘 다 쓰는 경우 미들 엔디언이라고 합니다.

 

리틀 엔디언(Little Endian)

 

많은 컴퓨터 시스템에서는 리틀 엔디언(Little Endian) 바이트 순서를 쓰는데, 낮은 자릿수의 바이트를 먼저 쓰고 높은 자릿수의 바이트를 나중에 쓰는 방식입니다. 16진수 0x1234를 메모리에 쓴다고 치면, 16진수에서 1바이트는 2자리 숫자이기 때문에 0x34 바이트를 먼저 쓰고 0x12 바이트를 나중에 쓰는 방식입니다. 이렇게 쓰는 이유는 셈을 할 때 낮은 자릿수를 먼저 하고, 올림을 높은 자릿수에 이어서 계산하기 편리하기 때문입니다.

 

0x1234에 0x0FFF를 더한다고 하면, 두 숫자의 낮은 두 자리인 0x34와 0xFF를 먼저 더해서 0x133이 되기 때문에 밑의 두 자리 0x33을 저장하고, 그 다음 0x01을 올림수로 해서 0x12 + 0x0F + 0x01 = 0x22이므로 계산 결과는 0x2233이 되고 메모리에는 0x33 다음 0x22가 저장된 형태가 됩니다.

 

빅 엔디언

모든 시스템에서 리틀 엔디언을 쓰는 것은 아닙니다. 통신의 경우 빅 엔디언(Big Endian)을 사용해 높은 자릿수를 먼저 씁니다. 이는 인터넷 주소가 전화번호와 같은 구조를 갖고 있기 때문입니다. 유선전화번호를 생각해 보면 (지역번호)-(전화국 번호)-(개인 번호) 형태로 가장 큰 지역이 먼저, 작은 지역이 나중에 옵니다. 인터넷 주소도 이처럼 가장 큰 자릿수가 어디에 주소가 할당되어 있는지를 결정하기 때문에 큰 자릿수의 바이트를 먼저 전송합니다.

 

정리

1. 컴퓨터가 처리하는 정보의 최소 단위를 바이트(Byte)라고 한다.

2. 1바이트는 8비트로, 8자리 이진수 혹은 2자리 16진수로 쓸 수 있다.

3. 하나의 데이터를 바이트 단위로 쪼개서 저장하는 순서를 바이트 순서(Byte order)라고 한다.

4. 낮은 자릿수 바이트를 먼저 쓰는 바이트 순서를 리틀 엔디언(Little endian)이라고 부른다.

5. 높은 자릿수 바이트를 먼저 쓰는 바이트 순서를 빅 엔디언(Big endian)이라고 한다.

6. 대부분의 컴퓨터 시스템에서는 리틀 엔디언을 쓴다.

7. 인터넷 통신 등 일부 분야에서는 빅 엔디언을 쓴다.

 

참조

한글 위키백과 - 엔디언

COMMENT