← Back to list

엔디안(Endian)

컴퓨터에서 메모리 공간에 여러 개의 연속된 대상을 배열하는 방법을 의미한다.

승키 · 2022-07-14 07:27 · 0 claps · 2.8 min read
#computer-science #endian
Open on Medium ↗
Wiki topics: 🔬 · Science · General

엔디안(Endian)

컴퓨터에서 메모리 공간에 여러 개의 연속된 대상을 배열하는 방법을 의미한다.

리틀 엔디안 vs 빅 엔디안

빅엔디안은 우리가 흔히 숫자를 쓰는 방식과 똑같다고 생각하면 된다. 쉽게 말해서 메모리의 시작부분부터 큰 단위가 앞에 오는 것이다. 0x123456을 빅엔디안으로 나타내면 아래 사진과 같다.

반면 리틀엔디안은 작은 단위가 메모리의 시작부분에 오는 것이다.

여기서 왜 숫자하나씩이 아니라 두개씩 1byte를 차지하는지 왜 12가 더 큰 단위인지 의문이 있을 수 있다.

이 이유는 바로 바이트 오더 때문입니다.

바이트오더(byte order)

첫번째로 숫자를 두개씩 저장하는 이유는 메모리에 저장되는 가장 작은 단위는 바이트이기 때문입니다.

1byte는 8bit 입니다. 이걸 표현해보면 0000 0000 이렇게 표현이 되는데 위의 메모리 주소는 16진수로 표현되어있고 16진수는 0000 이렇게 나타낼 수 있다. 그렇기에 1byte에는 두 개의 숫자가 저장되는 것입니다.

0x12345678을 bit 형식으로 표현하면 0001 0002 / 0003 0004 / 0005 0006 /0007 0008 처럼 표현할 수 있고 보기 좋게 1byte마다 “/”를 통해 구분을 해 보았습니다.

두 번째로 큰단위가 앞에 온다고 했는데 위에 이진수로 표현한 걸 보면 앞에서부터 2의 32승 31승 이런 식으로 맨 앞이 가장 최상위비트이기에 빅엔디안일 경우 12부터 리틀 엔디안일 경우 78부터 표현되는 걸 알 수 있습니다.

그럼 엔디안에 대해서 간략하게 알아보았는데 실제로 코드를 통해서 맥OS는 어떤 엔디안 방식을 사용하는지 알아보도록 하겠습니다.

제가 최근에 공부하고있는 c를 통해 엔디안 방식에 대해 알아보겠습니다.

#include <stdio.h>
int main() {
  int i;
  int test = 0x12345678;
  char* ptr = (char*)&test;
  for (i = 0; i < sizeof(int); i++){
    printf("%x", ptr[i]);
  }
  printf("\n");
  return 0;
}

test라는 int형 변수에 0x12345678이라는 값을 대입하고 ptr이라는 char포인터 변수에 test의 주소값을 담아주었습니다.

그 후 for문을 통해 1byte씩 저장된 값을 꺼내서 확인해보는 과정을 거친 코드입니다. 그럼 출력값이 87654321로 나오는데 이를 통해 리틀 엔디안 방식을 따르는 것을 확인할 수 있습니다.

리틀 엔디안과 빅엔디안의 장단점

리틀 엔디안 방식의 장점은 덧셈이 빠르다는 장점이 있습니다. 반대로 빅엔디안의 단점은 리틀 엔디안에 비해 덧셈 연산이 느리겟지요…

반면 빅 엔디안은 두 수의 대소비교하는데 빠르다는 장점이 있습니다.

이와 같은 차이가 발생하는 이유는 값을 저장하는 방식에 있습니다. 리틀엔디안 같은 경우는 작은 단위가 앞에 오는데 우리가 흔히 덧셈을 할 때 일의자리부터 연산을 하는 것을 생각하면 쉽게 이해가 될 것 입니다.

반면 대소비교는 빅엔디안이 빠른 이유는 예를 들면 1234와 5678이라는 두 수가 있을 때 천의 자리만 보고도 누가 더 큰지 쉽게 알 수 있는 원리와 같다고 생각하면 됩니다.


메타데이터
post_id
56be9fffc015
slug
엔디안-endian-56be9fffc015
url
https://medium.com/@ioseunggi/%EC%97%94%EB%94%94%EC%95%88-endian-56be9fffc015
canonical_url
https://medium.com/@ioseunggi/%EC%97%94%EB%94%94%EC%95%88-endian-56be9fffc015
author_url
https://medium.com/@ioseunggi
status
ok
fetched_at
2026-07-26 21:24:33