실행 결과를 자세히 보면 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비트로 저장 가능한 숫자의 범위는 0 ~ 2n(n은 비트의 개수) – 1까지 입니다.
표 2-1 | 비트 개수에 따른 메모리 저장 가능 범위
비트 개수 |
저장 가능 범위 |
|||
메모리 |
저장 가능 개수 |
저장 숫자 범위 |
||
1비트 |
0, 1 |
2 |
0과 1 |
0~(21-1) |
2비트 |
00, 01, 10, 11 |
4 |
0~3 |
0~(22-1) |
3비트 |
000, 001 010, 011 100, 101 110, 111 |
8 |
0~7 |
0~(23-1) |
... |
... |
... |
... |
|
n비트 |
000 .... 00 000..... 01 .... 111 .... 11 |
2n |
0~(2n-1) |