[이진 엔디안(Binary Endian)]
컴퓨터 메모리는 기나긴 비트(0과 1의 상태를 스위칭하는)의 배열입니다. 이러한 비트들의 조각이 모여 바이트(여덟개의 비트), 그리고 워드(16bits),롱워드(32bits),쿼드워드(64bits)로 단위 그룹화됩니다.
MSB,LSB
12라는 십진수를 이진숫자로 변환한다고 생각해보십시오. 너무나 당연하게도 '1100'이라는 이진수를 떠올린다면,아마도 당신은 걸리버 여행기에서 달걀은 뭉툭한 끝을 깨어서 먹어야한다고 주장하는 빅엔디안족에 분류가 될것입니다. 글자를 쓸경우 왼쪽에서 오른쪽으로 쓰는 나라도 있고, 오른쪽에서 왼쪽으로 쓰는 나라, 그리고 위에서 밑으로 내려쓰는 나라도 있습니다. 아쉽게도 밑에서 위로 쓰는 경우는 발견하지 못했지만, 못하는 것이 아니라 안하는 것일 뿐이겠죠. ^^
1100 (왼쪽에서 오른쪽으로)
0011 (오른쪽에서 왼쪽으로)
'왼편','오른편'이라는 표현을 사용했지만, 사실 이런 상대적인 표현은 정확한 것이 아닙니다. 앞에서 지적했다시피 글자의 방향은 문자를 쓰는 나라마다 자의적으로 변할 수 있으니까 말입니다. 그래서 이런 부정확성을 제거하기위해 컴퓨터 기술자들은 MSB,LSB라는 용어를 이용해서 표현하는데, 우선 MSB,LSB가 의미하는 바를 알아야겠죠?
MSB - Most Significanct Bit (가장 큰 비트 자릿수)
LSB - Least Significant Bit (가장 작은 비트 자릿수)
십진수 12는 이진수 '1100'이라는 이진숫자로 표현되는데, 가장 왼쪽에 나오는 1이라는 비트가 MSB가 됩니다. 반대로 가장 오른쪽에 나오는 비트 0은 LSB가 됩니다.
1 1 0 0
MSB LSB
리틀 엔디안식으로 표현하자면 아래와 같이 위치가 변합니다.
0 0 1 1
LSB MSB
컴퓨터 메모리는 각자 주소를 가지고 있습니다. 우리가 쓰는 IBM PC는 바이트단위로 주소를 할당하는데, 컴퓨터에 따라서는 바이트 단위가 아닌 워드단위(16비트)이상으로 주소를 할당하기도 합니다. 편의적으로 위의 그림에서 왼쪽이 주소가 낮은 쪽, 오른쪽이 주소가 높은 쪽이라고 생각해 봅시다. 그럼 다음과 같은 엔디안의 정의가 가능해집니다.
리틀엔디안 - LSB가 주소의 낮은 쪽에 먼저 등장하는 경우의 비트열
빅엔디안 - MSB가 주소의 낮은 쪽에 먼저 등장하는 경우의 비트열
이제좀 명확해졌습니까??
자.. 지금까지는 바이너리 오더링 다시말해 bit ordering에 관해서 살펴본 것입니다. 엔디안을 살펴볼때, 크게 두가지 체계에서 살펴볼 수 있는데, 첫째가 bit ordering이고 두번째가 byte ordering입니다. 그런데 실제로 문제가 되는 경우는 바이트 오더링이고 비트오더링은 별로 문제가 안됩니다. 왜냐하면, 비트오더링은 대부분의 컴퓨터가 빅엔디안을 채택하고 있기때문입니다. 모토롤라 계열이건, 인텔계열이건 8비트 내부의 비트오더링은 빅엔디안이 거의 표준으로 받아들여져서 사용하기 때문입니다.
다음편에서는 가장 논란을 가져왔던 바이트 오더링에 관해서 살펴보겠습니다.
|