컴퓨터 최대 정수

1 minute read


컴퓨터가 표현 가능한 최대 정수

2,147,483,647 게임을 좋아하는 사람이라면 한번 쯤은 보거나 들었을 숫자이다. 적을 때릴 때의 데미지나 소지한 아이템의 최대치 등 일정한 수 이상으로 값이 넘어가지 않을 때가 있다. 그 값이 위의 숫자라면 개발자가 지정한 자료형이 원인이 된다.


1. int 자료형 크기

  • int 자료형이 데이터를 담을 수 있는 공간의 크기는 4byte이다.
  • int로 표현 가능한 최대 정수
    32bit 운영체제 기준
    32bit의 메모리 공간을 사용하여 정수를 표현한다.
    가장 왼쪽의 1비트는 부호비트로 0일 때 양수 1일 때 음수를 나타낸다. 남은 31bit에 0과 1로 채워 이진수로 표현한다.

    max_int_size

    따라서 int는 1111111111111111111111111111111이 표현할 수 있는 최대 정수이고 십진법으로 바꾸면 2147483647가 나온다.


2. 더 큰 정수를 표현하기 위해서

  • 정수를 어떻게 표현할 것인가에 따라 보다 큰 정수를 표현할 수 있다.

  • unsigned int
    기본적으로 int의 앞에는 signed가 생략되어 표현되는데 이는 부호가 있는 정수 즉, 음수와 양수를 다 사용할 때 쓰는 자료형이다.

    unsigned int는 부호를 사용하지 않는 자료형으로 32bit를 모두 숫자를 표현하는데 사용할 수 있기 때문에 11111111111111111111111111111111까지의 정수를 표현할 수 있게 된다.

  • long long int
    int는 가장 효율적으로 처리될 수 있는 자료형이다.
    가장 효율적으로 처리된다는 의미는 컴퓨터가 한번에 처리할 수 있는 연산량으로 CPU의 발전에 따라 달라지게 된다. 32bit가 기본이 된 현재는 int 또한 32bit가 된다.

    long int가 만들어질 당시에는 16bit가 기본이였기 때문에 더 큰 정수형을 담기 위해 만든 long int는 int의 두 배크기인 32bit였다. 하지만 CPU의 발전으로 기본 연산량이 32bit가 된 시점에서 더 큰 정수를 담기 위해 long long int를 만들었고 이는 현재 int의 두 배 크기인 64bit이다.

    long long int도 signed과 unsigned으로 구분하여 사용가능하다.


자료형 표

|타입|크기|범위|
|:——–:|:—-:|:——–:| |(signed) int|4byte|-2147483648 ~ 2147483647| |unsigned int|4byte|0 ~ 4294967295| |(signed) long long int|8byte|-9223372036854775808 ~ 9223372036854775807| |unsigned long long int|8byte|0 ~ 18446744073709551615|