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진수 아니에요!!
'프로그래밍 > 웹, 네트워크' 카테고리의 다른 글
Web Server과 WAS의 차이점(MVC 모델링) 기초부터 설명해욧~ (1) | 2020.11.08 |
---|---|
http와 tcp/ip의 이해 (21) | 2020.10.31 |
티스토리 마크다운 언어 쓰기(프로그래밍 코드 양식?) (0) | 2020.05.16 |
Restful에 대한 이해하기(Restful 특징) - 4 (0) | 2020.01.13 |
Restful에 대한 이해하기(Restful과 SOAP차이) - 3 (0) | 2020.01.13 |
댓글