Post

정수 타입

정수 타입

정수 타입은 숫자를 나타내는 타입으로, byte, short, int, long 분류

타입 별로 차지하는 메모리 공간의 크기와 표현할 수 있는 범위

타입메모리표현 범위
byte1byte-128(-27) ~ 127(27 - 1)
short2byte-32,768(-215) ~ 32,767(215 - 1)
int4byte-2,147,483,648(-231) ~ 2,147,483,647(231 - 1)
long8byte-9,223,372,036,854,775,808(-263) ~ 9,223,372,036,854,775,807(263 - 1)
1
2
3
4
// 숫자가 길면 언더바로 구분할 수 있음
int   intNum   = 12_345_678_910;
long  longNum  = 12_345_678_910L;

long 타입 리터럴의 경우에는 리터럴 뒤에 접미사 L또는 l 로 구분

보통 숫자 1과 혼동을 방지하기 위해 대문자 L을 붙임

🧡 정수형의 오버플로우와 언더플로우

타입이 표현할 수 있는 값의 범위를 넘어서는 것을 오버플로우,언더플로우라고 함

오버플로우,언더플로우가 발생했다고 해서 에러가 발생하는 것은 아님 → 예상한 결과가 아님

최대값 +1 → 최소값

최소값-1 → 최대값

image

  • 오버플로우
  • 자료형이 표현할 수 있는 범위 중 최대값 이상의 값을 표현한 경우 발생.
    • 최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 순환
    • 예 : 어떤 값이 byte형이고, byte형의 최대값인 127을 값으로 가지는 경우,

    이 값에 1을 더하면 128이 되는 게 아니라, 최소값인 -128이 됨

  • 언더플로우
    • 자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생
    • 최소값을 넘어가면 해당 데이터 타입의 최대값으로 값이 순환
    • 예 : 어떤 값이 byte형이고, byte 형의 최소값인 -128을 값으로 가지는 경우,

    이 값에 1을 빼면 -129가 되는 게 아니라, 최대값인 127이 됨

This post is licensed under CC BY 4.0 by the author.