언어/PYTHON
[python] 파이썬으로 진법변환하기
sebinChu
2024. 8. 8. 01:01
개요
간단한 듯하면서도 구현을 할 때마다 까먹는 부분이 생겨서 이번 포스팅을 통해 확실하게 잡아보려고 한다.
1) 파이썬 함수를 통해 진법 변환하기
십진수를 이진수로, 이진수를 십진수로 파이썬 함수를 통해 변환하는 것은 상당히 간단하다.
1-1) 십진수를 이진수로 변환하기
십진수를 이진수로 변환할 때는 bin이라는 함수를 사용한다. 이 함수는 정수를 "0b"가 붙은 이진수로 변환해준다. (문서 참조)
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
코드트리에서 이 문제를 풀면서 정리해보았다! 앞으로 까먹지 말고 필요할 때 잘 쓰자.