이러쿵저러쿵


리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian) 의 차이는?

 

* 메모리에 값을 저장하는 방식(바이트 정렬 방식)을 기준으로 2가지 방법을 분류함.

 

1) 리틀 엔디안

 * 호스트 바이트 오더(Host Byte Order)라고도 불림.

 * 바이트 단위로 값을 뒤집어 메모리에 저장하는 방식. 즉 메모리 영역의 좌측부터 값을 저장 (예. 0x64 00 00 00)

 * IBM 호환 기종 즉 X86 프로세서 방식

 * CPU 연산속도를 최적화하기 위해 사용됨.

  - 메모리 앞쪽에 작은 자리의 수가 저장됨으로써, 메모리를 읽어들이는 대로 순차적으로 연산을 할 수 있으므로, 연산 속도 최적화. 연산을 할 때는 보통 일의 자리 수부터 큰 자리 수로 이동해가며 연산함. (간단히, 덧셈, 곱셈할 때를 생각해 보시면 될 것 같아요~)

 

2) 빅 엔디안

 * 네트워크 바이트 오더(Network Byte Order)라고도 불림.

 * 메모리 번지가 커지는 순으로 데이터 저장. 다시 말하면 메모리 앞쪽에 큰 자리의 수를 저장하는 방식 (예. 0x00 00 00 64)

 * 선(Sun), 모토로라 등에서 만드는 머신에서 사용하며, 네트워크 표준 방식.

 * 논리 연산에 최적화된 저장 방식

  - 메모리 앞쪽에 큰 자리의 수가 저장됨으로써, 메모리를 읽어들이는 대로 수를 비교하면 됨. 어떤 두 값을 비교할 때에는 일의 자리수를 비교하기 보다는 큰 자리의 수를 비교하는 것이 더 빠름. 예를들어 2530과 5079 이 두 수를 비교할 때에는 천의 자리 숫자인 2와 5만 비교해도 어떤 수가 더 큰지 알 수 있음)

 

 

각기 다른 방식을 사용하는 시스템간에 네트워크 통신으로 데이터를 주고 받는다면 문제가 발생하지 않을까?

즉, 네트워크로 데이터를 전송하거나 비트 단위로 암호화 시킨 후, 다른 시스템에서 복호화 하여 사용할 때, 문제 발생 소지가 있음. 일반적으로 네트워크 통신에는 네트워크 표준 방식인 빅 앤디안을 사용하지만, 자신의 컴퓨터가 리틀 엔디안 방식을 쓰고 있다면 데이터를 네트워크로 전송 시킬 때 빅앤디안 방식으로 변환해서 전송해야 함.

 

프로그램을 개발할 때, 네트워크 통신 관련하여 이러한 문제 해결을 위해 리틀 엔디안을 빅 엔디안으로, 빅 엔디안을 리틀 엔디안으로 변환해 줄 필요가 있을 수 있음.

 

저작자 표시 비영리 변경 금지
신고


Comment +0

티스토리 툴바