2009년 11월 22일 일요일

Little Endian and Big Endian

리틀 엔디안(Little endian)

 - 메모리의 작은 주소에 작은 쪽 숫자를 쓰는 것.

 - 0x12345678 을 메모리에 쓸때 메모리의 앞쪽에 78 56 34 12 이런식으로 쓰는 것.

 - 메모리는 바이트 오더링(byte ordering) 이다.

 - 16 진수는 한자리에 0~15까지 16개 숫자를 표시할 수 있고,  1~15까지를 2진수로 표시하면, 0001~1111까지, 즉 4bit가 16진수 1자리 인거고, 1바이트가 되려면 16진수 2자리가 필요함. 바이트 오더링(byte ordering)인 메모리는 16진수를 2자리씩 하나로 취급하기 때문에 두자리씩 묶어서 이동하게 됨.

 

빅 엔디안(Big endian)

 - 빅엔디안은 메모리의 큰주소에 작은 숫자를 쓰는 것.

 - 0x1234567 을 12 34 56 78(앞쪽이 메모리의  앞부분 주소(작은주소))

 

두 방법의 차이

 - 두 방법의 차이는 1234와 2345의 대소비교는 앞을 비교할 때 빠르고, 1234와 1567을 더할 때에는 뒷자리부터 4와 7을 더해 1을 올리고 3과 6을 더한 1을 더해서 9를 찍고 하는 식이 빠르다.

 - 리틀 엔디안은 산술 연산이 빠르고, 빅 엔디안은 크기 비교가 빠름.

 - 앞자리를 0으로 채워야 하는 빅엔디안보다, 리틀엔디안이 실제적인 수의 접근이 빠르다고 함.

 

현재

 - 네트워크에서는 빅엔디안으로 통일됨.

 - 인텔계열 CPU는 리틀 엔디안

 - 퀄컴 MSM 6290관련 계열은 리틀 엔디안

 - 퀄컴 QDSP 8250은 빅 엔디안

 

댓글 없음:

댓글 쓰기