컴퓨터는 기본적으로 bit라는 정보 단위를 사용합니다.
bit는 0과 1을 표현하는 가장 작은 단위로 1 bit는 2가지, 2 bit는 4가지, n bit는 가지를 표현할 수 있습니다.
우리가 사용하는 게임이나 여러가지 프로그램들은 전부 0과 1로 이루어진 수많은 비트로 표현됩니다.
그렇다면 정보의 단위는 어떻게 확장되는지 알아보겠습니다.
1바이트(1byte) | 8비트(8bit) |
1킬로바이트(1kB) | 1000바이트(1000byte) |
1메가바이트(1MB) | 1000킬로바이트(1000kB) |
1기가바이트(1GB) | 1000메가바이트(1000MB) |
1테라바이트(1TB) | 1000메가바이트(1000GB) |
과거에는 정보의 크기가 크지 않아 1024와 1000의 차이가 크지 않아 같이 사용하곤 했는데 최근에는 이 작은 오차가 결과에 크게 작용할 수 있어 단위를 분류하기 시작했습니다.
1바이트(1byte) | 8비트(8bit) |
1키비바이트(1kiB) | 1024바이트(1024byte) |
1미비바이트(1MiB) | 1024키비바이트(1000kiB) |
1기비바이트(1GiB) | 1024미비바이트(1000MiB) |
1테비바이트(1TiB) | 1024미비바이트(1000GiB) |
본론으로 돌아와 컴퓨터는 0과 1로 어떻게 숫자를 표현하는지 알아보겠습니다.
우리가 일상적으로 사용하는 10진법을 2진법으로 변환하면 0과 1로 표현할 수 있습니다.
십진법은 숫자가 9를 넘어갈 때 자리 올림을 하는 반면에 이진법을 1을 넘어가는 시점에 자리 옮림을 하여 0과 1로만 숫자를 표현하는 방법입니다.
십진법 | 이진법 |
---|---|
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
9 | 1001 |
10 | 1010 |
이진법은 십진법과 구분하기 위해 , 0b1001
로 표현할 수 있습니다.
그렇다면 음수는 어떻게 표현할까요?
대표적으로 2의 보수법을 사용합니다. 비트들의 맨 앞을 부호비트로 정하여 구분할수도 있지만 이 방법은 계산 시 추가적인 연산이 필요한 반면 2의 보수법은 이런 추가연산이 필요 없어 2의 보수법을 주로 채택하고 있습니다.
2의 보수법은 1의 보수법에 1을 더하는 방법으로 구할 수 있습니다.
1의 보수법은 비트들을 반전시켜서 음수를 표현하는 방법이며 여기에 1을 더하면 되는 방법입니다.
십진법 | 이진법 | 1의 보수법 | 2의 보수법 |
---|---|---|---|
-1 | 1을 이진법으로 표현 0001 | 1110 | 1111 |
-2 | 2를 이진법으로 표현 0010 | 1101 | 1110 |
-6 | 6을 이진법으로 표현 0110 | 1001 | 1010 |
-7 | 7을 이진법으로 표현 0111 | 1000 | 1001 |
여기서 -6을 나타내는 1010과 10을 나타내는 1010과는 어떻게 구분하는지 의문점이 들 수 있습니다. 이것을 구분하기 위해 CPU내부에 flag 레지스터라는 존재가 있기 때문에 양수인지 음수인지 구분할 수 있습니다.
그렇다면 2의 보수법으로 뺄셈 계산의 예를 하나 들어보겠습니다.
이 됩니다. 이것을 2의 보수법으로 바꿔서 풀어보면 아래와 같습니다.
으로 표현할 수 있습니다.
이진법과 같이 컴퓨터는 십육진법을 사용하는 경우가 많습니다.
이진법은 숫자를 표현하기 위한 길이가 너무 길어지는 단점이 있고 십육진법은 이진법으로, 이진법은 십육진법으로 간편하게 변환할 수 있기 때문에 많이 사용합니다.
십육진법도 이진법과 십진법처럼 15를 넘어갈 때 자리올림을 하며 아래와 같이 표현할 수 있습니다.
십진법 | 십육진법 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
16 | 10 |
십육진법도 표기에 구분을 하기 위해 또는 0x15
와 같은 방식으로 표현할 수 있습니다.
십육진법을 사용하는 이유 중 이진법과의 변환이 간단하다고 설명했습니다.
십육진법 한자리의 수를 이진법으로 표현하기 위해서는 총 4개의 자리가 필요합니다.
을 이진법으로 표현하기 위해서는 로 표현할 수 있게 됩니다.
위와 같은 특징으로 십육진법의 하나의 자리를 나타내는 수를 4개의 이진법으로 표현하고 이를 이어 붙이기만 하면 이진법으로 표현할 수 있습니다.
반대로 이진법을 십육진법으로 변환하는 것도 간단합니다.
으로 나눌 수 있고
,
으로 표현할 수 있습니다.
오늘은 컴퓨터가 0과 1로 숫자를 표현하는 방법에 대해서 알아보았습니다.
다음 시간에는 0과 1로 문자를 표현하는 방법에 대해서 알아보겠습니다.