컴퓨터에서 어떤 크기의 데이터를 메모리에 저장할 때 바이트 단위로 나누어 저장합니다. CPU 아키텍처에 따라 바이트 저장순서가 달라질 수 있기 때문에 두 가지로 나뉘는 데 그것이 바로 '리틀-엔디안'과 '빅-엔디안' 방식입니다. 어떤 CPU에서는 이 두 가지 방식을 모두 지원하도록 구성할 수도 있답디다.
리틀-엔디안 (Little-Endian)
낮은(시작) 주소에 하위 바이트부터 기록, Intel CPU 계열예) 32비트형 (4바이트) 값: 0x01020304
하위 주소 | 0x04 | 0x03 | 0x02 | 0x01 | 상위 주소 |
빅-엔디안 (Big-Endian)
낮은(시작) 주소에 상위 바이트부터 기록, Sparc / RISC CPU 계열예) 32비트형 (4바이트) 값: 0x01020304
하위 주소 | 0x01 | 0x02 | 0x03 | 0x04 | 상위 주소 |
빅엔디안은 우리가 평소에 보던 방식으로 메모리에 쓴다고 생각하면 되고 리틀엔디안은 뒤집혀서 쓴다고 이해하면 되겠죠? 그럼 왜 빅엔디안으로 안 쓰는 걸까요? 그 이유는 산술연산유닛(ALU)에서 메모리를 읽는 방식이 메모리 주소가 낮은 쪽에서부터 높은 쪽으로 읽기 때문에 산술 연산의 수행이 더 쉽습니다. 또한, 데이터를 다른 시스템으로 전송할 때 서로 다른 데이터 저장 방식의 시스템끼리 통신하게 되면 전혀 엉뚱한 값을 주고받기 때문이랍니다.
댓글 없음:
댓글 쓰기