Big-Endian과 Little-Endian

Godssi·2024년 11월 28일

Communication

목록 보기
5/8

Qt와 Socket Library를 이용하여 패킷 테스트 프로그램을 만드는 과정에서 컴퓨터 시스템에서 데이터의 저장 방식이 중요하다는 것을 알게 되었다. 빅 엔디안(Big-Endian)과 리틀 엔디안(Little-Endian)은 데이터를 메모리에 저장하는 방식이다. 이 글에서는 두 가지 저장 방식에 대해서 정리하겠다.


Endian(엔디안) 개념

Endian(엔디안)은 컴퓨터 시스템이 데이터의 바이트 순서를 저장하고 해석하는 방법을 나타낸다. Endian은 주로 다중 바이트로 이루어진 데이터의 저장 방식과 관련이 있다.

빅 엔디안(Big-Endian)

가장 중요한 바이트(MSB, Most Significant Byte)를 가장 낮은 메모리 주소에 저장하는 방식이다.

가장 중요한 바이트(MSB)와 가장 덜 중요한 바이트(LSB)

  • 가장 중요한 바이트(MSB, Most Significant Byte) : 다중 바이트 값에서 가장 상위 비트를 포함하는 바이트로 값의 대부분을 결정한다. 일반적으로 높은 자리의 값을 나타낸다.
  • 가장 덜 중요한 바이트(LSB, Least Significant Byte) : 다중 바이트 값에서 가장 하위 비트를 포함하는 바이트로 값의 가장 작은 부분을 결정한다. 일반적으로 낮은 자리의 값을 나타낸다.
    예를 들어, 16진수 0x12345678 일 경우, 12가 MSB이고 78이 LSB이다.

예를 들어, 32 Bit 정수 0x12345678을 Big-Endian 방식으로 저장하면, 메모리에는 다음과 같이 저장된다.

장점

  1. 사람이 숫자를 읽는 방식과 동일하게 저장되므로, 디버깅 시 더 직관적일 수 있다.
  2. 네트워크 프로토콜에서 주로 사용되어, 네트워크 통신 시 데이터의 일관성을 유지하기 쉽다

단점

  1. 일부 프로세서 아키텍처는 Little-Endian을 기본으로 하므로, Big-Endian 데이터를 처리할 때 Overhead가 발생할 수 있다.

리틀 엔디안(Little-Endian)

가장 중요한 바이트(MSB, Most Significant Byte)를 가장 높은 메모리 주소에 저장하고 가장 덜 중요한 바이트(LSB, Least Signigicant Byte)를 가장 낮은 메모리 주소에 저장하는 방식이다.
예를 들어, 32 Bit 정수 0x12345678을 Little-Endian 방식으로 저장하면, 메모리에는 다음과 같이 저장된다.

장점

  1. Little-Endian 방식은 일부 프로세서, 특히 x86 아키텍처에서 효율적인 데이터 처리를 가능하게 한다. 이는 낮은 자리 수의 바이트를 먼저 접근하기 때문에 연산 속도를 높일 수 있다.
  2. Little-Endian 방식에서는 바이트 데이터를 순차적으로 추가가 용이해진다.

단점

  1. 사람에게 덜 직관적이다. 숫자가 메모리에 역순으로 저장되기 때문에 사람이 데이터를 읽을 때 혼동할 수 있다.
  2. 많은 네트워크 프로토콜이 Big-Endian을 사용하기 때문에, 네트워크 데이터를 전송하거나 수신할 때 변환이 필요하다.

참고 자료

빅엔디안(Big-endian)과 리틀엔디안(Little-endian) 이해하기 : https://riptutorial.com/posix/example/22276/socket-basics


profile
세상을 도울 로봇 개발자

0개의 댓글