Little & Big Endian

2025. 1. 14. 21:18·Embedded/CAN

Little & Big Endian

Bit(비트) 와 Byte(바이트)

컴퓨터는 모든 데이터를 2진수로 표현하고 처리한다,
비트(bit)
컴퓨터가 데이터를 처리하기 위해서 사용하는 최소 단위이다. 이러한 비트에는 2진수의 값 0 과 1을 단 하나만 저장할 수 있다.

바이트(byte)
위와 같은 비트가 8개 모여서 구성되고, 한 문자를 표현할 수 있는 최소 단위다.

이떄 바이트가 저장되는 순서에 따라 아래 Little, Big Endian 두 가지 방식으로 나눌 수 있다.

Little & Big Endian을 배우기 전에, 바이트의 저장 순서를 먼저 알아야한다.


Big Endian

빅 엔디안 방식은 낮은 주소에 데이터의 높은 바이트(MSB, Most Significant Bit)부터 저장하는 방식이다. 이 방식은 평소 우리가 숫자를 사용하는 선형 방식과 같은 방식이다.
ex)12,34,56,78 이러한 방식으로 이해하기가 쉽다.

0x12345678  // 비트의 크기의 정수가 있다.
0x12, 0x34, 0x56, 0x78 // 1바이트 값 4개로 구성되어 있다.

4개의 바이트 값을 빅 엔디안 방식으로 저장하면 아래와 같이 저장된다.

Little Endian

리틀 엔디안 방식은 낮은 주소에 데이터의 낮은 바이트(LSB, Least Significant Bit)부터 저장하는 방식으로, 이 방식은 평소 우리가 숫자를 사용하는 선형 방식이 아닌 반대로 읽어야한다.
대부분의 인텔 CPU 계열에서는 이 방식으로 데이터를 저장하며, 아래 사진을 참고하자


Big & Little 차이점

빅 엔디안과 리틀 엔디안은 저장해야 할 데이터를 어떻게 나눠 저장하는 지 차이점을 가지고 있다.

물리적으로 데이터를 조작하거나 산술 연산에서는 리틀 엔디안
데이터의 각 바이트를 배열처럼 취급할 때에는 빅 엔디안

대부분의 윈도우 기반의 시스템은 인텔 기반으로 리틀 엔디안 방식을 사용하고, 네트워크를 통해 데이터를 전송할 때에는 빅 엔디안 방식을 사용한다. 이와 같이 인텔 기반의 소켓 통신을 할 때 바이트 순서에 신경을 써서 데이터를 전달해야한다.

int i;

int example = 0x12345678;       // 4개의 바이트가 모여있음
char *ptr = (char *)&example    // char 타입으로 1바이트만 가리키는 포인터 생성 

for(i = 0; i<sizeof(int); i++) {
    printf("%x", ptr[i]);      // 1 바이트씩 순서대로 값을 출력한다.
}


// Return 78563412 -> 리틀 엔디안 방식으로 리턴

| 출처 : TCP School (https://www.tcpschool.com/c/c_refer_endian)

'Embedded > CAN' 카테고리의 다른 글

Classical CAN & CAN FD의 비교  (0) 2025.01.09
CAN 기본 내용  (0) 2024.12.19
'Embedded/CAN' 카테고리의 다른 글
  • Classical CAN & CAN FD의 비교
  • CAN 기본 내용
Junsgram
Junsgram
  • Junsgram
    Junsgram
    Junsgram
  • 전체
    오늘
    어제
    • Junsgram (10)
      • CS (0)
      • Embedded (10)
        • CAN (3)
        • Embedded SW (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    can #ecu #can통신 #can이란? #can공부
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Junsgram
Little & Big Endian
상단으로

티스토리툴바