본문 바로가기

CS/컴퓨터구조

이진수를 십진수로 변환하는 방법 (이진법|십진법)

정의

 

지난 글에 이진법을 다음과 같이 정의했다.

 

이진법(binary)

0과 1만으로 숫자를 표현하는 방법이다.

이진법은 숫자가 1을 넘어가는 시점에 자리 올림 한다. 

 

십진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
이진수 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001

 

이렇듯 자리에 1이 생기면, 그 다음 숫자를 표현하기 위해서는 다음 자리가 1이 된다. 


패턴

 

여기서 몇가지 패턴을 살펴볼 수 있다. 

 

1. n bit로 표현할 수 있는 숫자의 개수는 2^n개다.

ex) bit 3개로 표현 가능한 수는 2^3 = 8개다. 

 

2. n bit로 표현 가능한 가장 큰 양수는 2^n - 1이다. 

ex) bit 3개로 표현 가능한 가장 높은 양수는 2^3 - 1 = 7이다. 

 

3. 특정 자리의 bit이 의미하는 숫자는 2^(n-1)이다. 

ex) 3번째 자리의 bit이 1일 경우 (100) 해당 자리의 값은 2^(3-1) = 4이다. 

1 1 1 1 1 1 1
64 32 16 8 4 2 1

 


이진수 → 십진수

 

자 그럼 이제 본격적으로 이진수를 십진수로 변경하는 방법을 알아보자. 

 

이진수로 11001이 주어졌다고 하자. 

이때, 1인 자리는 첫 번째 자리, 네 번째 자리, 다섯 번째 자리이다. 

 

이전에 언급한 팩트 3번에 의하면 n번째 자리의 bit 값은 2^(n-1)이다. 

첫 번째 자리 → 2^(1-1) = 1

네 번째 자리 → 2^(4-1) = 8

다섯 번째 자리 → 2(5-1) = 16

이 값들을 모두 합치면 25, 즉 11001은 25다. 

1 1 0 0 1
16 8 0 0 1

 


십진수 → 이진수

 

그럼 반대로 십진수를 이진수로 변환하려고 할 때는 어떻게 하면 좋을까?

 

방법은 다음과 같다:

1. 십진수를 2로 나눠서 나머지를 적어둔다.

2. 2로 나눈 몫을 또 2로 나워서 나머지를 적어둔다.

3. 몫이 0이 될때까지 위의 단계를 반복한다. 

4. 지금까지 기록한 나머지를 최신순으로 이진수를 왼쪽에서 오른쪽으로 적는다. 

 

바로 이해하기는 어려울테니 그림으로 이해해보자!

 

십진수 29이 주어졌다고 하자. 

 

1. 29을 2로 나누면 나머지는 1, 몫은 24이다.

2. 14을 2로 다시 나누면 나머지는 0, 몫은 7이다.

3. 다시 7을 2로 나누면 나머지는 1, 몫은 3이다. 

4. 3을 2로 나누면 나머지는 1, 몫은 1이다. 

5. 마지막으로 1을 2로 나누면 나머지는 1, 몫은 0이다.

6. 지금까지 기록한 나머지를 최신순부터 이진수로 왼쪽에서 오른쪽으로 적는다. 

그럼 11101이 나온다. 

 

즉, 십진수 28은 이진수로 11101이다.

 

끝!