CS/CS

[CS] 리틀 엔디안, 빅 엔디안

sihyeong 2022. 12. 16. 21:44

엔디안

  • 엔디안은 컴퓨터 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻한다.
  • 큰 단위가 앞에 나오는 빅 엔디안
  • 작은 단위가 앞에 나오는 리틀 엔디안
  • 두 경우에 속하지 않거나 둘 모두 지원하는 미들 엔디안이라 부른다.

 

빅엔디안

  • 빅엔디안은 최상위 바이트(MSB - bit 영역의 제일 왼쪽) 부터 차례로 저장하는 방식이다.
  • 빅엔디안은 사람이 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 오는 방식이다.
  • 0x1234를 표현하면 (12 34)로 표현된다.
  • 오늘날 사용하는 대부분의 pc에서의 사용 방식

리틀엔디안

  • 리틀엔디안은 최하위 바이트(LSB - bit 영역의 제일 오른쪽) 부터 차례로 저장하는 방식이다.
  • 리틀엔디안은 작은 단위의 바이트가 앞에 온다.
  • 0x1234를 표현하면 (34 12)로 표현된다.
  • 네트워크 환경에서의 사용 방식

아래의 그림은 12345678을 빅 엔디안과 리틀 엔디안으로 표현한 그림이다.

 

오늘날 x86 아키텍처를 사용하는 대부분의 데스크톱 컴퓨터는 거의 리틀 엔디안을 쓴다.

 

역사적으로 라우팅이 전화를 거는 식으로 접두 부호로 이루어졌기 때문에

네트워크 환경에서는 빅 엔디안을 사용한다.

 

따라서 pc와 네트워크 환경에서의 데이터 전송 시 이러한 엔디안을 맞춰주지 않으면 엉뚱한 값을 주고 받게 된다.

pc에서는 데이터를 보내기 전 빅엔디안 형식으로 바꾼 뒤 데이터를 네트워크에 보내야 한다.

 

 

이러한 두 엔디안은 서로 다른 장단점을 가지고 있다.

장단점

빅 엔디안 :

  • 읽고 쓰는 방식이 사람이 읽고 쓰는 방식과 같아 디버그 하기 편하다.
  • 수를 비교할 때 큰수부터 바로 비교하기 때문에 비교할 땐 빅 엔디안이 빠르다.

 

리틀 엔디안 :

  • 메모리에 저장된 하위 바이트들만을 사용할 때 별도의 계산이 필요없어 하위비트는 보통 타입의 시작 주소로 사용되어 형 변환 시 별도의 계산없이 할 수 있어 속도가 빠르다.
  • 수를 더할 때 하위 비트들의 계산이 필요하기 때문에 산술은 리틀 엔디안이 더 빠르다.