Page 40 - 든든한 Java programming 도서 미리보기
P. 40
34 든든한 Java Programming
데이터의 범위는 데이터 타입에 따라 변수가 표현 할 수 있는 데이터 값을 나타낸다.
데이터 범위를 넘어가는 값이 변수에 저장되었을 경우 변수는 제대로 된 정보를 표현
하지 못한다. 이러한 상황을 변수의 데이터가 오버플로우(Overflow)되었다고 한다.
[코드 2-6]은 변수의 오버플로우를 보여주는 프로그램이다.
코드 2-6 변수의 오버플로우
1? public class Example {
2? public static void main(String[] args) {
3? byte x= Byte.MAX_VALUE;
4? System.out.println(x);
5?
6? x++; x 변수의 값을 1 증가 시킴
7? System.out.println(x);
8? }
9? }
결과
127
-128
6번째 줄의 x++는 x에 1을 더해준다는 의미이다. byte 타입의 최댓값인 Byte.MAX_
VALUE는 127이고 byte 타입 변수 x에 1을 더했더니 ?128이 되었다. 127에서 1을 더
했으니 128이 나올 것이란 예상을 깨고 ?128이 나왔다. 이는 byte 데이터 값의 범위를
넘어가는 값을 표현하려고 했기 때문이고 ?128이 나온 이유는 JAVA는 음수를 표현하
기 위해 2의 보수를 사용하기 때문이다. 컴퓨터 프로그램은 0과 1로 구성된 비트 값으
로 이루어지고 데이터 또한 0과 1로 구성된 비트 값으로 저장된다. 2의 보수는 어떤 수
에 대한 2진수로 표현한 값으로 맨 첫 자리는 수가 0이면 양수, 1이면 음수를 의미하며,