본문 바로가기
Computer Science

[Programming] 이진법 십진법 변환 (Binary to Decimal)

by Henry Cho 2021. 2. 21.
728x90

 

이진법을 십진법을 다루는건 프로그래밍에서 기본이자

공통적으로 알고 있어야 되는 개념이기에 확실히 알아두고 가야 한다.

진법 변환을 알아야 되는 간단하면서 중요한 이유는 컴퓨터 언어 체계가 이진법이기 때문이다.

 

진법 계산을 잘해야하는게 중요하진 않지만,

각각의 진법이 어떤식으로 변환되어 적용되는지를 확실하게 알아야지

코딩 과정에서 응용해서 사용할 수 있다.

 

따라서 개념에 대한 이해를 확실히 해야 하는데,

한번만 확실히 알아두면 어렵지 않기 때문에 걱정하지 않고 찬찬히 따라하면 된다.

대표적으로 제일 많이 사용되는 진법은 2진법, 8진법, 10진법, 16진법이다.

이번 포스트에서는 2진법을 10진법으로 변환되는 방법에 대해서 살펴볼 것이다.

 

우선 간단한 예시를 살펴보자.

Binary == Decimal
1111 == 15

진법 계산은 수학적 계산 방법과 크게 다르지 않다.

따라서 수학 시간에 배웠던 진법 계산법을 떠올리면 쉽게 이해할 수 있다.

위의 예제에서 이진법 1111은 십진법으로 변환할 경우 15로 산출된다.

이진법이 십진법으로 변환되는 방법을 살펴보자.

1111 == 15

이진법은 2의 제곱으로 계산하여 십진법으로 변환된다.

따라서 첫번째 자리수(맨 오른쪽에 있는 숫자)부터

2의 0제곱, 2의 1제곱, 2의 2제곱, 2의 3제곱...2의 n제곱으로 증가한다.

위의 이진법 1111 경우에는 1*2^3+1*2^2+1*2^1+1*2^0이며,

8+4+2+1로 15라는 십진법 변환 결과가 산출된다.

 

1011 == 11

다른 예로 1011와 같이 0이 포함될 경우 해당 자리수는 0을 곱하기 때문에 0이 산출된다.

따라서 위의 그림처럼 8+0+2+1 임으로 이진법 1011은 십진법으로 변환시 11이 된다.

 

몇 가지 예제를 살펴보자.

Binary == Decimal

10110 == 22
1011110 == 94
100000010 == 258

 

진법 계산을 막 배우기 시작한 컴공과 새내기나 초보 개발자라면

꼭 계산기를 이용하지 말고 직접 계산을 해봐야한다.

프로그래밍은 언제나 눈으로 보면 쉬워 보인다.

하지만 프로그래밍의 궁극적 목적은 응용이기 때문에 알고만 있고 사용하지 못하면 소용이 없다.

 

이진법에서 십진법에 대해 완벽히 이해했다면 계산은 컴퓨터에게 맡기자.

아래는 진법 계산을 할때 사용하기 유용한 온라인 진법 계산기이다.

www.rapidtables.com/convert/number/binary-to-decimal.html

 

Binary to Decimal Converter

From Binary Decimal Hexadecimal To Binary Decimal Hexadecimal

www.rapidtables.com

 

아래는 이진법을 십진법으로 변환하는 예제 코드이다.

해당 예제 코드는 파이썬으로 작성되었다.

#HOOAI
#변수
val_num = 0
bin_num = list(input("Binary: "))

#for 함수를 통해서 bin_num 길이까지 반복
for i in range(len(bin_num)):
    #digit 변수는 bin_num에서 pop 함수를 통해서 끝에서부터 1일 경우 2의 제곱으로 산출
	digit = bin_num.pop()
	if digit == '1':
        #pow 함수를 통해서 2제곱을 계산하여 이진법에서 십진법으로 변환
		val_num = val_num + pow(2, i)

print("Decimal: ", val_num)
728x90

댓글