✖

진법 변환

수를 십진법에서 다른 진법으로, 거꾸로 다른 진법에서 십진법으로 바꾸는 방법을 알아보자.

진법이란

우리는 보통 십진법을 쓴다. 십진법에는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9의 숫자 열 개가 있다. 십진법의 특징은 어떤 수, 예를 들어 57에 10을 곱하면 자리가 하나 올라간다는 것이다. 즉 이 수를 나타내는 데 숫자가 하나 더 필요하다. 570이 된다.

다른 진법도 있다. 예를 들어 8진법에는 숫자 0, …, 7만 있다. 그래서 7 + 1은 10이 된다. 8진법에는 숫자 8이 없기 때문이다. 십육진법에는 숫자 0, 1, … 14, 15가 있다. 9보다 큰 숫자 대신 알파벳을 쓰기도 하므로, 십육진법의 숫자는 0, …9, A, B, C, D, E, F가 된다.

놀랍게도 일상에서도 다른 진법을 만난다. 예를 들어 시간이 그렇다. 초와 분은 60진법으로 센다. 하루의 어느 순간이든 세 자리의 60진법 수로 쓸 수 있다. 첫째 자리는 시, 둘째 자리는 분, 셋째 자리는 초를 나타낸다. 자리를 쌍점으로 구분하면 예를 들어 14:05:59라는 수가 된다. 이 시각에 1초를 더하면 14:05:60이 아니라 14:06:00이 된다는 것에 주목하자. 60은 60진법의 숫자가 아니기 때문이다.

십진법에서 이진법으로

종이에 70이라는 수가 있다고 하자. 이 수를 이진법으로 바꾸고 싶다. 원리는 꽤 간단하다. 바꾸려는 수를 0이 될 때까지 계속 2로 나누면서, 나눗셈의 나머지를 적어 둔다. 다른 진법, 예를 들어 십육진법으로 바꾸고 싶으면 16으로 나눈다. 6진법이라면 6으로 나눈다. 실제로는 다음과 같다.

70÷2=35⟶0(나머지)35÷2=17⟶117÷2=8⟶18÷2=4⟶04÷2=2⟶02÷2=1⟶01÷2=0⟶1

이진법으로 나타낸 수는 나머지들로 이루어진다. 다만 나머지를 위에서부터가 아니라 아래에서부터 읽는다. 따라서 70을 이진법으로 나타내면 1000110이다.

이진법에서 십진법으로

거꾸로 바꿀 때는 다음과 같이 한다. 1100010을 십진법으로 바꾸어 보자. 이 방향이 더 간단하다. 다음 합만 계산하면 된다.

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

각 항은 x · 2i 꼴이다. 여기서 x는 원래 이진수의 숫자이고, i는 오른쪽에서부터 1씩 커진다. 1100010을 바꾸는 것이므로 이 합은 다음과 같다.

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

1100010은 일곱 자리 수이므로 2의 지수는 차례로 6, 5, …, 1, 0이다. 거듭제곱을 계산하고 곱하면 다음 식을 얻는다.

11000102=64+32+2=98.

이 방법은 왜 통할까?

십진법으로 확인해 보자. 수, 예를 들어 7384에서 각 숫자는 실제로 무엇을 뜻할까? 숫자 4는 일의 개수, 숫자 8은 십의 개수, 숫자 3은 백의 개수, 숫자 7은 천의 개수를 나타낸다. 그래서 다음과 같이 쓸 수 있다.

7384=7⋅1000+3⋅100+8⋅10+4⋅1

이 식을 100, 10, 1 대신 언제나 10의 거듭제곱이 나오도록 바꿀 수 있다. 100 = 1, 101 = 10 등이 성립하므로 다음과 같이 쓸 수 있다.

7384=7⋅103+3⋅102+8⋅101+4⋅100

십진법의 모든 수는 같은 방법으로 나타낼 수 있고, 이때 각 항은 x · 10i 꼴이다. 여기서 x는 0부터 9까지의 숫자로, 모두 열 개이다. i는 자리를 나타내는 0 이상의 정수이다. i = 0이면 그 항은 일의 자리를, i = 2이면 백의 자리를 나타낸다(102 = 100이므로).

이번에는 7348을 십진법에서, 음…, 십진법으로 바꾸어 보자. 나름 의미가 있다. 7348을 10으로 나눈다.

7348÷10=734⟶8(나머지)734÷10=73⟶473÷10=7⟶37÷10=0⟶7

나머지를 아래에서부터 읽으면 7348이다. … 같은 진법으로 바꾸려던 원래 수가 그대로 다시 나온다.

이진법도 똑같이 나타낼 수 있다. 모든 항은 x · 2i 꼴이고, 여기서 x는 숫자 0 또는 1이다. i는 이번에도 자리를 나타낸다. 10으로 계속 나누면 십진법으로 나타낸 수의 각 자리 숫자를 얻는 것처럼, 2로 계속 나누면 이진법의 각 자리 숫자를 얻는다.

또 수를 10으로 나누었을 때 나머지는 언제나 구간 [0, 9]에 있다는 것에도 주목하자. 수를 2로 나누면 나머지는 0 또는 1이다.

다른 진법으로

앞에서 십진법을 이진법으로 바꾼 방법은 매우 일반적이어서 다른 진법에도 쓸 수 있다. 185를 십육진법으로 바꾸고 싶으면 16으로 나누기만 하면 된다.

185÷16=11⟶9(나머지)11÷16=0⟶11

185는 십육진법으로 (11, 9)가 된다. 9보다 큰 “숫자” 대신 보통 알파벳을 쓰므로 10 = A, 11 = B, 12 = C, …이다. 따라서 185는 십육진법으로 B9라고 쓸 수 있다.

마찬가지로 십육진법의 B9를 십진법으로 바꿀 수 있다.

B916=11⋅161+9⋅160=11⋅16+9=185