오버플로우 본문
반응형
오버플로우란?
자바에서의 계산 결과가 최댓값을 넘거나 혹은 최솟값보다 작을 경우, 음수는 양수로, 양수는 음수로 바뀌는 문제가 발생한다.
이는 오버플로우라고 하며, 자료형의 범위를 벗어나는 연산 값이나 값 할당이 일어난 경우 야기되는 현상이라고 볼 수 있다.
(마치, 500ml 용량의 컵에 1,000ml의 물을 따랐을 때, 넘쳐흐르는 것(overflow)으로 생각하면 쉽다.)
참고로 메모리가 표현할 수 있는 값보다 적은 값을 저장하는 경우는 언더플로우라고 한다.
간단한 코드로 설명하면 다음과 같다.
public class NumberOverflow {
public static void main(String[] args) {
int maxInt = Integer.MAX_VALUE;
System.out.println(maxInt); // 2147483647
System.out.println(maxInt +1); // -2147483648
}
}
이때 자바의 int에 할당하는 수는 4byte로 -2,147,483,648(-2^31) ~ 2,147,483,647(2^31 -1)의 범위를 가지고 있기 때문에,
최댓값을 할당한 maxInt 는 출력 값이 2,147,483,647
최댓값에 +1을 할당한 maxInt 는 출력 값이 음수인 -2,147,483,648 이 출력되는 것을 확인할 수 있다.
반응형
'개발 > Python | Java' 카테고리의 다른 글
Python 문법 & 비트마스킹 (0) | 2023.11.17 |
---|---|
Python 문법 & 메서드 (리스트) (0) | 2023.10.19 |
Python 문법 & 메서드 (문자열) (0) | 2023.10.18 |
Comments