[JAVA] 4. 정수의 오버플로우

2014. 12. 23. 12:33프로그래밍/JAVA

    목차

정수의 오버플로우

 

- 정수형 데이터타입별 표현할 수 있는 범위를 넘어갈 경우에 발생한다.

- 우리가 생각하는 방식대로 연산을 할 경우 발생할 수 있다.

- byte를 예로 -128 ~ +127까지 표현할 수 있는데 127값을 가지고 있는 변수에 +1을 할 경우

데이터 표현 범위를 넘어가게 된다. 이럴경우 예외상황이 발생하는것이 아니라

가장 작은 값인 -128값을 가지는 현상.

 

◇ 127 일경우

0 (부호)

1

  

여기에 +1를 할 경우

 

1 (부호)

 

이와 같이 가장 작은 값인 -128에 해당하는 비트 값을 가지게 되어 버리는 예외상황이 발생하게 된다.

 

일반적으로 우리가 생각하는 수학적인 모습으로 보면

 

…  

-3 

-2 

 -1

… 

 

이러한 모습이겠지만 정수형 데이터타입에서 숫자를 표현해주는 비트의 모습으로 보면

 

 

 

그림과 같이 가장 작은 값과 가장 큰 값이 서로 맞물려 있는 모습이라고 보시면 됩니다.

 

정수형 데이터타입으로 연산을 할 경우에는 항상 쓰려고하는 데이터타입의 최대, 최소 표현범위를 확인하여

 

연산중에 오버플로우가 발생하지 않도록 신경써야 합니다.