상세 컨텐츠

본문 제목

바이트 오더링(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' 카테고리의 다른 글

Database Index 알아보기  (0) 2022.02.05
SOLID 원칙  (0) 2022.02.03
정렬 기본문제 (두 배열의 원소 교체)  (0) 2022.01.30
정렬 기본  (0) 2022.01.29
최단 경로 알고리즘(플로이드 워셜)  (0) 2022.01.19

관련글 더보기

댓글 영역