본문 바로가기

오버플로우 본문

개발/Python | Java

오버플로우

자전하는명왕성 2023. 6. 12. 01:29

오버플로우란?

자바에서의 계산 결과가 최댓값을 넘거나 혹은 최솟값보다 작을 경우, 음수는 양수로, 양수는 음수로 바뀌는 문제가 발생한다.

이는 오버플로우라고 하며, 자료형의 범위를 벗어나는 연산 값이나 값 할당이 일어난 경우 야기되는 현상이라고 볼 수 있다.

(마치, 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