04
20

이진법

우리는 일상생활에서 십진법을 사용합니다. 0에서 9까지 세고 나면 10으로 한 자리가 올라가기 때문에, 십진법의 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9의 열 개입니다. 우리 손의 손가락이 열 개이기 때문에, 한번에 세는 숫자가 열까지라는 점은 자연스러운 결과입니다.

 

그러면 컴퓨터는 숫자를 어떻게 셀까요? 컴퓨터는 전압이 높은 상태와 전압이 낮은 상태의 두 가지 상태밖에 인식하지 못합니다. 숫자로 나타내면 1(전압이 높음)과 0(전압이 낮음)밖에 셀 수 없습니다. 그러면 2보다 큰 숫자를 셀 때는? 다음 자릿수로 올려야죠.

 

 

십진수와 이진수

숫자 뒤에 붙은 괄호 속의 숫자는 진법을 의미합니다. 왼쪽의 숫자는 10이 붙어 있으니 십진법이고, 오른쪽의 숫자는 2가 붙어 있으니 이진법으로 쓴 숫자입니다.

 

십진법으로 쓸 때 가장 오른쪽 자리는 일의 자리, 그 다음 십의 자리, 그 다음 백의 자리... 입니다. 그렇지만 이진법에서는 자릿수의 숫자가 달라집니다. 0, 1까지 세고 다음 숫자는 2이기 때문에 이진법에서 두 번째 자리는 2의 자리입니다. 그 다음 자리는 0, 1, 10, 11까지 센 후에 올라가고 11(2) = 2 + 1 = 3(10)이므로 세 번째 자리는 4의 자리입니다. 넷째 자리는 0, 1, 10, 11, 100, 101, 110, 111까지 센 후에 올라가고 111(2) = 4 + 2 + 1 = 7(10)이므로 8의 자리입니다.

 

1의 자리, 2의 자리, 4의 자리, 8의 자리...의 규칙을 보면, 이전 자리수보다 2배 더 커지는 것을 알 수 있습니다. n자리 이진수가 표현할 수 있는 숫자의 갯수는 각 자리의 숫자가 0이나 1의 2가지뿐이므로 2의 n제곱이고, 맨 첫번째 숫자가 0이기 때문에 2의 n제곱 - 1까지 표현할 수 있기 때문에 다음 자리의 숫자는 2의 n + 1제곱이 되는 것입니다.

 

십육진법

 

십진수, 십육진수, 이진수

이진수는 자릿수 길이가 긴데다 1과 0만 반복되어서 알아보기가 어렵기 때문에, 이진수를 사람이 알아보기 편한 방법으로 십육진수를 사용합니다. 십육진법에서 한 자리를 표현하는 데 사용하는 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개입니다. A ~ F 각각이 의미하는 숫자는 A = 10, B = 11, C = 12, D = 13, E = 14, F = 15입니다. 십진법에서 둘째 자리가 십의 자리, 이진법에서 둘째 자리가 2의 자리였던 것처럼, 십육진법에서 둘째 자리는 16의 자리입니다. 셋째 자리는 16 * 16 = 256의 자리, 넷째 자리는 16 ^ 3 = 4096의 자리... 이고요.

 

십육진수를 사용하는 이유는 아까 말한 대로 자릿수가 적어 알아보기가 쉽고, 이진수와 십육진수 간 변환이 간단하게 이루어지기 때문입니다. 위의 그림에서 십육진수 16의 자리는 이진수에서 128의 자리 ~ 16의 자리, 십육진수 1의 자리는 이진수에서 8~1의 자리로 바로 바꿀 수 있습니다. 16 * 13 = 128 + 64 + 16이고, 1 * 6 = 4 + 2이죠. 이렇게 변환할 수 있는 이유는 16이 2의 거듭제곱이기 때문입니다. 이진수 네 자리는 아까 말한 대로 2의 4제곱 - 1까지의 숫자를 표현할 수 있는데, 이는 십진수로 15이고, 십육진수로 한 자리 숫자의 최대값인 F(16)입니다. 자연스럽게 다음 자릿수는 십진수로 16, 십육진수로는 10(16)이 됩니다.

 

프로그래밍을 할 때는 숫자의 뒤에 괄호를 붙여서 표시하는 방법을 쓰지 않습니다. 프로그램이 숫자를 읽기 전에 숫자의 진법을 알고 있는 편이 낫기 때문에 숫자의 앞에 진법을 표시하는 단어를 쓰기 때문입니다. 이 포스팅 시리즈에서는 흔히 사용되는 방법인 이진수 0b, 십진수 0d(혹은 생략), 십육진수 0x를 붙이는 방법을 쓰도록 하겠습니다. 각각의 의미는 Binary(이진법), Decimal(십진법), heXadecimal(십육진법)의 약자입니다.

위의 그림에 있는 숫자를 이 방법으로 쓰면, 0d214 = 0xD6 = 0b11010110가 됩니다.

 

정리

1. 우리가 평소에 쓰는 수 체계는 0~9까지 열 개의 숫자를 쓰는 십진법이다.

2. 컴퓨터는 전압이 높은 상태와 낮은 상태, 1과 0밖에 쓰지 못하므로 이진법을 사용한다.

3. n자리 이진수는 (2의 n제곱) - 1까지 표현할 수 있다.

4. 이진법을 알아보기 쉽도록 십육진법을 쓴다. 십육진법의 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개이다.

5. 이진수 4자리는 십육진수 1자리로 변환할 수 있다.

6. 이진수, 십진수, 십육진수는 각각 숫자 앞에 0b, 0d, 0x를 붙여서 표시한다.

참조

한글 위키백과 - 이진법

한글 위키백과 - 십육진법

COMMENT