Page 20 -
P. 20
printf("c = %d\n", c);
printf("d = %d\n", d);
}
실행 결과
a = 2147483647
b = -2147483648
TIP
c = -2147483648 비주얼 스튜디오에서 이 코드를 실행하면 오류가 발생합니다. 정
상적이지 않은 값을 유도하기 위해 처음부터 변수의 범위를 넘어
d = 2147483647
서는 값을 초기화하였기 때문입니다.
실행 결과를 자세히 보면 a와 c는 정상적으로 결과가 나왔지만, b와 d는 정확한 값으로 출력되
지 않았습니다. 왜 이런 현상이 발생했을까요?
int는 정수를 저장하는 데 필요한 메모리 공간을 4바이트 사용한다고 하였습니다. 설명한 바
와 같이 컴퓨터는 모든 정보를 0과 1, 즉 2진수로 처리합니다. 이때 0 또는 1을 저장할 수 있
는 메모리 공간을 비트(bit)라고 합니다. 비트는 컴퓨터가 정보를 저장하는 최소 공간으로, 8개
의 비트가 모인 공간을 바이트(byte)라고 합니다. 그러므로 4바이트는 32비트와 같습니다. 1비
트로 표현 가능한 숫자는 0과 1 두 개뿐입니다. 2비트로 표현 가능한 숫자는 2진수 00, 01, 10,
11, 즉 10진수로 0, 1, 2, 3을 표현하고 저장할 수 있습니다. 확장하여 3비트일 때는 어떨까요?
000, 001, 010, 011, 100, 101, 110, 111, 즉 정수 0~7까지 총 8개의 정수를 표현하고 저장할
n
수 있습니다. 그러므로 n비트로 저장 가능한 숫자의 범위는 0 ~ 2 (n은 비트의 개수) – 1까지 입
니다.
표 2-1 | 비트 개수에 따른 메모리 저장 가능 범위
저장 가능 범위
비트 개수
메모리 저장 가능 개수 저장 숫자 범위
1
1비트 0, 1 2 0과 1 0~(2-1)
00, 01,
2
2비트 4 0~3 0~(2 -1)
10, 11
000, 001
010, 011
3
3비트 8 0~7 0~(2 -1)
100, 101
110, 111
... ... ... ...
42 모두의 C 언어