본문 바로가기
개념

[개념] 빅 엔디안 & 리틀 엔디안 (Big-Endian & Little-Endian)

by 부먹짱 2022. 3. 28.
반응형

 

비트(bit)란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이다.

바이트(byte)는 한 문자를 표한할 수 있는 최소 단위로 8비트로 구성되어있다. (1Byte = 1Bit)

 

컴퓨터는 데이터를 바이트 단위로 저장하고

연속되는 바이트를 저장하는 순서가 바로 바이트 배열 순서(Byte Order)이다.

 

데이터는 낮은 주소에서 높은 주소 차례로 저장되지만

이 데이터가 저장되는 순서에 따라 빅 엔디안과 리틀 엔디안이 나뉜다.

 

 

빅 엔디안 Big-Endian

상위 비트부터 바이트 단위로 저장하는 방식으로 평소 사람이 숫자를 사용하는 방식과 같은 방식이다.

큰 자리 수부터 저장하기 때문에 숫자 비교에 유리하고 저장된 순서 그래도 읽을 수 있어 이해가 용이하다.

 

빅 엔디안 저장 방식

 

리틀 엔디안 Little-Endian

하위 비트부터 바이트 단위로 저장하는 방식

자리 올림 수 여부를 판단하기 용이하여 수학적 연산에 유리하다.

 

리틀 엔디안 저장 방식

 

반응형

 

보통 우리가 사용하는 컴퓨터는 인텔 기반의 윈도우인데 대부분의 인텔 CPU 계열에서는 리틀 엔디안 방식을 사용한다.

하지만 네트워크를 통해 데이터를 전송할 때는 빅 엔디안 방식이 사용된다.

 

이러한 이유로 소켓 통신을 구현할 때,

빅 엔디안과 리틀 엔디안의 개념을 이해하고 바이트 순서를 고려하여 데이터를 전송하여야 한다.

만약 바이트 순서에 따른 변환을 거치지 않고 데이터를 전송한다면 잘못된 데이터가 전송될 것이다.

 

 

(예시) 바이트 순서를 고려하지 않을 경우

 

 

바이트 순서를 변환하기 위해서는 아래의 Byte Ordering 함수를 사용해야한다.

 

빅 엔디안 Big-Endian 변환 함수

  • htons (host to network short) - 16비트 수량을 리틀 엔디안에서 빅 엔디안으로 변환
  • htonl (host to network long) - 32비트 수량을 리틀 엔디안에서 빅 엔디안으로 변환

리틀 엔디안 Little-Endian 변환 함수

  • ntohs (netowork to host short) - 16비트 수량을 빅 엔디안에서 리틀 엔디안으로 변환
  • ntohl (network to host long) - 32비트 수량을 빅 엔디안에서 리틀 엔디안으로 변환

 

 

 

함께 보면 좋은 글 ▽

구조체 패딩 (Struct Padding)

 

[개념] 구조체 패딩

구조체 패딩은 성능 향상을 위해 CPU가 접근하기 쉬운 위치 메모리에 구조체 필드를 배치하는 것이다. CPU는 메모리를 읽어올 때 한 번에 [32bit OS*]는 4byte, [64bit OS]는 8byte를 읽어온다. 아래와 같은

bumukisbest.tistory.com

 

반응형

댓글