리틀 엔디언과 빅 엔디언
1. 엔디언?
2. 리틀 엔디언
리틀 엔디언은 역순으로 메모리에 저장됩니다.
리틀 엔디언을 사용하는 CPU는 대표적으로 Intel, AMD가 있습니다.
리틀 엔디언 같은 경우 산술 연산시 빠르다는 장점이 있습니다.
역순으로 정렬된 메모리에 순차적으로 접근하면서 맨 뒤에 수부터 더해가므로 carry가 발생해도 이를 쉽게 처리할 수 있습니다.
즉, 저희가 흔히 산술 연산하는 방법. ex) 1234 + 5678 일 때 맨 뒷수인 8과 4를 더하고 그 후 3과 7을 더하고 이런식으로 가게 됩니다.
하지만 빅 엔디언으로 되어있을 경우 1과 5를 더하고 2와 6을 더하고 이 과정에서 carry가 발생되면 해당 수를 올려주기 위해 다시 돌아오게 됩니다.
3. 빅 엔디언
빅 엔디언 같은 경우 메모리에 정순으로 정렬되게 됩니다.
따라서 인간이 왼쪽에서 오른쪽으로 글을 써 내려가는 것과 같습니다.
쓰이는 곳은 주로 네트워크 프로토콜, IBM 시스템, ARM에서 사용하고 있습니다.
빅 엔디언 같은경우 데이터가 정렬되어 있어 순서대로 읽기가 빠릅니다.
또한 바이트 순서에 신경써야할 곳인 네트워크 통신을 할 때 필요하게 됩니다.
4. 어떤걸 써야할 까?
요즘 라이브러리들은 잘 되어 있어서 디폴트로 데이터를 빅 앤디언 방식으로 바꿔 보내주게 됩니다.
C 언어 같은 경우에는 htons()를 사용해 빅 엔디언으로 바꿔줘야 합니다.
본인 시스템에서 어떤 엔디언을 사용하는지 알고 싶다면 다음 코드를 C 코드로 실행해 주시면 됩니다.
빅 엔디언 Output : 12345678
리틀 엔디언 Output : 78563412
※ 해당 출력결과는 16진수를 1바이트씩 나타낸 것입니다. 햇갈리지 마세요. 10진수 아니에요!!