[JAVA] 4. 정수의 오버플로우
2014. 12. 23. 12:33ㆍ프로그래밍/JAVA
- 목차
■ 정수의 오버플로우
- 정수형 데이터타입별 표현할 수 있는 범위를 넘어갈 경우에 발생한다.
- 우리가 생각하는 방식대로 연산을 할 경우 발생할 수 있다.
- byte를 예로 -128 ~ +127까지 표현할 수 있는데 127값을 가지고 있는 변수에 +1을 할 경우
데이터 표현 범위를 넘어가게 된다. 이럴경우 예외상황이 발생하는것이 아니라
가장 작은 값인 -128값을 가지는 현상.
◇ 127 일경우
0 (부호) |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
여기에 +1를 할 경우
1 (부호) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
이와 같이 가장 작은 값인 -128에 해당하는 비트 값을 가지게 되어 버리는 예외상황이 발생하게 된다.
일반적으로 우리가 생각하는 수학적인 모습으로 보면
… |
-3 |
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
… |
이러한 모습이겠지만 정수형 데이터타입에서 숫자를 표현해주는 비트의 모습으로 보면
그림과 같이 가장 작은 값과 가장 큰 값이 서로 맞물려 있는 모습이라고 보시면 됩니다.
정수형 데이터타입으로 연산을 할 경우에는 항상 쓰려고하는 데이터타입의 최대, 최소 표현범위를 확인하여
연산중에 오버플로우가 발생하지 않도록 신경써야 합니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 6. 형변환(Casting) (0) | 2014.12.24 |
---|---|
[JAVA] 5. 데이터타입이란? (0) | 2014.12.23 |
[JAVA] 3. 기본형 데이터타입의 저장 가능 범위 (390) | 2014.12.19 |
[JAVA] 2. 변수의 선언 (0) | 2014.12.18 |
[JAVA] 1. 변수란 무엇인가? (0) | 2014.12.16 |