Easy ways

[개념정리] 빅엔디안(Big Endian)과 리틀엔디안(Little Endian) 본문

개념정리

[개념정리] 빅엔디안(Big Endian)과 리틀엔디안(Little Endian)

softColors 2021. 3. 24. 09:37
반응형

통신을 하다 보면 통신 패킷이 반대로 나갈 때가 있습니다.

예를 들면 1 2 3 4를 보냈는데 막상 받는 쪽에서 들어온 패킷은 4 3 2 1인 거죠

 

이는 컴퓨터 CPU의 데이터를 저장하는 순서에서 발생하는 오류입니다.

 

메모리에 어떠한 데이터를 저장할 때 큰 쪽을 앞 주소에 두느냐 뒷주소에 두느냐의 차이입니다.

 

저장할 때 상위 바이트. 즉, 큰 쪽을 먼저 저장하는 것을 빅 엔디안(Big Endian),

저장할 때 하위 바이트. 즉, 작은 쪽을 먼저 저장하는 것을 리틀 엔디안(Little Endian)이라고 합니다.

 

예를 들어보겠습니다. 

컴퓨터에 int 형 4byte 데이터 0x01020304를 저장한다고 했을 때

빅 엔디안은 첫 번째 주소에 가장 큰 값인 0x01을 먼저 저장합니다.

리틀 엔디안은 첫 번째 주소에 가장 작은 값인 0x04를 저장합니다.

 

그림으로 표현하면 다음과 같습니다.

Big endian 과 Little endian 차이

 

그렇다면 엔디안이 왜 중요하고 왜 문제가 되는 것일까요?

 

물론 같은 엔디안 사이의 통신에서는 문제가 되지 않습니다.

 

리틀엔디안과 리틀엔디안의 통신

읽는 방식과 쓰는 방식이 같기 때문에 문제 될 것이 없죠.

 

하지만 다른 방식의 엔디안 사이의 통신에서 비로소 문제가 발생합니다.

 

리틀 엔디안에서 0x1234는 저장할 때 0x34 0x12로 저장이 되는데 

 

이를 그대로 빅 엔디안에 전송하게 되면 

 

빅 엔디안은 0x3412로 이해하기 때문에 문제가 발생합니다. 

 

이러한 문제를 방지하기 위해서 

네트워크에서는 빅 엔디안으로 통일하도록 되어있습니다.

 

 

추가로

리틀 엔디안을 적용하는 대표적인 CPU는 Intel 

빅 엔디안을 적용하는 대표적인 CPU는 Sparc입니다.

반응형
Comments