상세 컨텐츠

본문 제목

바이트 오더링(Byte Ordering)

똑똑한 개발/Algorithm 과 Data Structure

by 성댕쓰 2022. 2. 2. 09:42

본문

Byte Ordering

1차원 컴퓨터 메모리 공간에 여러 개의 연속된 데이터를 배열하는 방법. 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian)이 있다.

 

LittleEndian vs BigEndian

 

  • Big Endian
    • 큰 단위가 낮은 메모리 주소에 배열되는 방법
    • 숫자 비교에 유리
    • 디버깅에 유리
      • 사람이 읽는 순서와 동일하게 메모리에 저장되므로 쉽게 디버깅 가능하다.
    • 네트워크 바이트 오더에서 사용
      • TCP, UDP, IP 같은 많은 프로토콜에서 Big Endian 방식을 흔하게 사용한다.
  • Little Endian
    • 낮은 단위가 낮은 메모리 주소에 배열되는 방법
    • 연산에 유리
      • 올림수가 있는 경우 낮은 단위부터 계산하는 것이 유리한데 Little Endian 방식이 낮은 수부터 배열되어 있으므로 Big Endian보다 유리하다.
        •   
          리틀 엔디안이 연산에 유리
    • 타입 변환에 유리
      • Little Endian 방식은 시작 주소에 값이 들어가 있어 int16을 int8로 형 변환 하려고 할 때, 앞에서부터 1byte만 자르면 된다. 하지만 Big Endian 방식은 2byte를 읽고 뒤에서 1byte를 잘라내야 된다. 때문에 Little Endian 방식이 타입 변환에 유리하다.
      • 타입 변환에 유리

 

 

 

  • 서로 다른 시스템에서 다른 Byte Ordering 방식을 사용하여 통신하면 문제가 생기므로 메모리를 같은 Byte Ordering 방식으로 변환하거나 각 시스템에 맞는 방식으로 변환하는 작업이 필요하다.
    • ex) 네트워크 바이트 오더링으로 변환
      • htons(Host to Network Short) : short 메모리 값을 host byte ordering에서 network byte ordering으로 변환
    • ex) 시스템 사용하는 바이트 오더링으로 변환
      • ntohs(Network to Host Short) : short 메모리 값을 network byte ordering에서 host byte ordering으로 변환

 

참조

'똑똑한 개발 > Algorithm 과 Data Structure' 카테고리의 다른 글

관련글 더보기

댓글 영역