언어/PYTHON

[python] 파이썬으로 진법변환하기

sebinChu 2024. 8. 8. 01:01

개요


간단한 듯하면서도 구현을 할 때마다 까먹는 부분이 생겨서 이번 포스팅을 통해 확실하게 잡아보려고 한다.

 

 

 

1) 파이썬 함수를 통해 진법 변환하기


십진수를 이진수로, 이진수를 십진수로 파이썬 함수를 통해 변환하는 것은 상당히 간단하다.

 

1-1) 십진수를 이진수로 변환하기

십진수를 이진수로 변환할 때는 bin이라는 함수를 사용한다. 이 함수는 정수를 "0b"가 붙은 이진수로 변환해준다. (문서 참조)

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

 

number = 10
binary_number = bin(number) # 0b1010

 

 

1-2) 이진수를 십진수로 변환하기

이진수를 십진수로 변환할 때는 우리가 흔히 쓰는 int 함수를 사용하면 된다.

int 함수에 첫 번째 인자로 들어갈 수 있는 자료형은 문자형임을 주의하자!

 

binary_number = 1010
number = int(str(binary_number), 2) # 10

 

 

 

2) 알고리즘을 통해 직접 진법 변환하기


2-1) 십진수를 N진수로 변환하기

 

우리가 보통 이진수를 십진수로 변환할 때 위와 같은 과정을 거친다. 

2라는 숫자로 자릿수를 나타낸 것이므로, 각 자릿수에 해당하는 숫자와 진수를 곱하여 이를 모두 더하면 십진수를 구할 수 있다.

 

def to_decimal(binary_number):
    number = 0
    n = len(binary_number)-1
    for i in range(n, -1, -1):
        number += 2**(n-i) * binary_number[i]
    
    return number

 

 

2-3) 십진수를 N진수로 변환하기

 

어떤 십진수가 있을 때 N진수로 변환하고 싶다면 위와 같은 계산 과정을 거친다. 이를 코드로 표현해주면 다음과 같다.

 

def to_binary(decimal_number):
    binary_list = []
    while decimal_number != 0:
        binary_list.append(decimal_number%2)
        decimal_number //= 2

    # 연산한 값을 reverse하여 이진수 도출
    re_binary_list = []
    for i in range(len(binary_list)-1, -1, -1):
        re_binary_list.append(binary_list[i])
    
    return re_binary_list

 

 

 

 

코드트리에서 이 문제를 풀면서 정리해보았다! 앞으로 까먹지 말고 필요할 때 잘 쓰자.