글 목록으로 돌아가기

TechNotes

int보다 char가 메모리를 덜 쓰는데 숫자는 char로 저장하는 것이 더 효율적일까?

char와 int의 메모리 크기 차이만으로 자료형을 선택할 수 없는 이유

Dohyeon Kim
Dohyeon Kim 2026년 8월 5일 · 2분 읽기
DeepDive CS DataType

Q. char는 1Byte이고 int는 4Byte인데, 숫자는 char로 저장하는 것이 더 효율적이지 않을까?

char는 1Byte, int는 4Byte이다.

그렇다면 메모리를 아끼기 위해 숫자도 char로 저장하는 것이 더 좋은 선택 아닐까?

A. 자료형은 메모리 크기보다 CPU의 처리 방식과 저장할 데이터의 범위를 고려해서 선택해야 한다.

직관적으로는 char가 메모리를 4배 적게 사용하므로 더 효율적으로 보인다.

하지만 현대 컴퓨터에서는 대부분 그렇지 않다.

CPU는 작은 자료형도 그대로 계산하지 않는다.

현대 CPU는 64비트(8Byte) 레지스터를 기준으로 연산한다.

따라서 charshort와 같은 작은 자료형도 대부분 연산 전에 int 또는 CPU가 사용하는 내부 연산 크기로 자동 승격(Integer Promotion)된다.

예를 들어

char a = 10;
char b = 20;

char c = a + b;

개념적으로는 다음과 같은 과정을 거친다.

char → int(또는 CPU 내부 연산 크기)로 승격
                ↓
            연산 수행
                ↓
      결과를 다시 char에 저장

즉, char를 사용한다고 해서 CPU의 연산량이 줄어드는 것은 아니다.

메모리도 항상 절약되는 것은 아니다.

CPU는 메모리에 빠르게 접근하기 위해 데이터를 일정한 단위로 정렬(Alignment)한다.

예를 들어

struct Data {
    char a;
    int b;
};

메모리는 다음과 같이 배치될 수 있다.

a        1Byte
padding  3Byte
b        4Byte

총 8Byte

char는 1Byte이지만 int를 정렬하기 위해 중간에 Padding이 추가된다.

따라서 char를 사용해도 기대만큼 메모리를 절약하지 못하는 경우가 많다.

그렇다면 언제 char를 사용할까?

char는 단순히 메모리를 아끼기 위한 자료형이 아니다.

다음과 같은 경우에 적합하다.

  • 문자 저장
  • ASCII 코드 처리
  • 바이트 단위 데이터 처리
  • 네트워크 패킷 처리
  • 파일 입출력

반대로 일반적인 정수 계산은 대부분 int를 사용하는 것이 자연스럽다.

자주 하는 오해

  • char가 1Byte이므로 항상 int보다 효율적이다.
    • 아니다. 연산 시 대부분 int 크기로 승격된다.
  • char를 사용하면 연산도 더 빨라진다.
    • 아니다. 현대 CPU에서는 성능 차이가 거의 없으며 오히려 형 변환이 발생할 수 있다.
  • 자료형은 크기만 보고 선택하면 된다.
    • 아니다. 저장할 값의 범위와 CPU의 처리 방식을 함께 고려해야 한다.

정리

  • char는 1Byte, int는 일반적으로 4Byte이다.
  • 작은 자료형이 항상 성능상 유리한 것은 아니다.
  • CPU는 작은 자료형도 대부분 int 크기로 변환하여 연산한다.
  • 메모리 정렬 때문에 char를 사용해도 메모리가 절약되지 않는 경우가 있다.
  • 자료형은 메모리 크기보다 저장할 값의 범위와 CPU의 처리 방식을 기준으로 선택하는 것이 바람직하다.

댓글