일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- multicast
- 라즈베리파이
- 코딩테스트후기
- 다항회귀
- 삼성sw역량테스트b형
- Ubunrtu
- TensorflowServer
- HTML
- raspberrypi
- html input
- ubuntu18.04
- RIAD0
- 삼성SW역량테스트
- docker
- 개념설명
- jupyter
- C언어
- 웹페이지 기본
- Linux
- HTML예제
- html input tag
- Raid
- html태그정리
- RAID개념설명
- RAID구축
- html환경구축
- CSS
- 다항회귀예제
- 멀티캐스트
- tensorflow
- Today
- Total
Easy ways
[개념정리] 빅엔디안(Big Endian)과 리틀엔디안(Little Endian) 본문
통신을 하다 보면 통신 패킷이 반대로 나갈 때가 있습니다.
예를 들면 1 2 3 4를 보냈는데 막상 받는 쪽에서 들어온 패킷은 4 3 2 1인 거죠
이는 컴퓨터 CPU의 데이터를 저장하는 순서에서 발생하는 오류입니다.
메모리에 어떠한 데이터를 저장할 때 큰 쪽을 앞 주소에 두느냐 뒷주소에 두느냐의 차이입니다.
저장할 때 상위 바이트. 즉, 큰 쪽을 먼저 저장하는 것을 빅 엔디안(Big Endian),
저장할 때 하위 바이트. 즉, 작은 쪽을 먼저 저장하는 것을 리틀 엔디안(Little Endian)이라고 합니다.
예를 들어보겠습니다.
컴퓨터에 int 형 4byte 데이터 0x01020304를 저장한다고 했을 때
빅 엔디안은 첫 번째 주소에 가장 큰 값인 0x01을 먼저 저장합니다.
리틀 엔디안은 첫 번째 주소에 가장 작은 값인 0x04를 저장합니다.
그림으로 표현하면 다음과 같습니다.
그렇다면 엔디안이 왜 중요하고 왜 문제가 되는 것일까요?
물론 같은 엔디안 사이의 통신에서는 문제가 되지 않습니다.
읽는 방식과 쓰는 방식이 같기 때문에 문제 될 것이 없죠.
하지만 다른 방식의 엔디안 사이의 통신에서 비로소 문제가 발생합니다.
리틀 엔디안에서 0x1234는 저장할 때 0x34 0x12로 저장이 되는데
이를 그대로 빅 엔디안에 전송하게 되면
빅 엔디안은 0x3412로 이해하기 때문에 문제가 발생합니다.
이러한 문제를 방지하기 위해서
네트워크에서는 빅 엔디안으로 통일하도록 되어있습니다.
추가로
리틀 엔디안을 적용하는 대표적인 CPU는 Intel
빅 엔디안을 적용하는 대표적인 CPU는 Sparc입니다.
'개념정리' 카테고리의 다른 글
[python]다항회귀(Polynomial Regression)란? [예제 포함] (1) | 2022.07.25 |
---|---|
멀티캐스트(multicast)란? [feat. 브로드캐스트(broadcast)] (1) | 2021.02.05 |
RAID 란?? (0) | 2020.11.10 |