기억 휘발 방지소

진수변환 본문

Algorithm

진수변환

choice91 2022. 7. 23. 19:58
728x90
반응형

N 진수 ➡️ 10 진수 변환

N진수에서 10진수로 변환하는 방법은 파이썬에서는 매우 간단하다.

int() 함수를 사용하면 된다.

int 함수는 실수를 정수로 변환해주는 역할도 하지만 밑(base)을 사용할 수도 있다.

 

int(value, base)의 형태로 사용하면 된다.
value는 값이고 base는 밑이다. 
value는 0, base는 10이 초기값이다.
base는 2~36 사이의 값을 입력할 수 있다.
print(int('1011', 2))  # 2^3 + 2^1 + 1   = 11
print(int('16', 8))    # 1 * 8^1 + 6 * 1 = 14
print(int('F', 16))    # 15 * 1          = 15

각각 2진수, 8진수 16진수를 10진수로 변환한 것이다.

이렇게 하면 쉽게 10진수로 변환할 수 있다.

 

 

10진수 ➡️ 2, 8, 16진수

먼저 2진수, 8진수 16진수는 전용 함수가 있다.

순서대로 bin(), oct(), hex() 이다.

 

위에 코드를 거꾸로 바꿔보면 다음과 같이 출력된다.

print(bin(11))  # 2진수: 0b1011
print(oct(14))  # 8진수: 0o16
print(hex(15))  # 16진수: 0xf

2진수의 경우 '0b', 8진수의 경우 '0o', 16진수의 경우 '0x'가 앞에 붙는다.

 

10진수 ➡️ N진수

2진수, 8진수, 16진수를 제외한 N 진수들은 bin, oct, hex 같은 함수가 없기 때문에 구현해줘야한다.

아래 코드는 11을 3진수로 바꾸는 예제이다.

# n: 변환하고자 하는 수
# base: 진수

def solution(n, base):
    result = ''

    while n > 0:
        n, mod = divmod(n, base)
        result += str(mod)

    return result[::-1]
    
 print(solution(11, 3))  # 102

몫과 나머지를 구해 나머지를 result에 이어준다. result에는 역순으로 저장되기 때문에 마지막에 리턴할 때는 역순으로 리턴해줘야한다.

 

끝!

728x90
반응형

'Algorithm' 카테고리의 다른 글

유클리드 알고리즘 (Euclidean Algorithm)  (0) 2022.09.07
삽입정렬 (Insertion Sort)  (0) 2022.07.25
선택정렬 (Selection Sort)  (0) 2022.07.25
버블정렬 (Bubble Sort)  (0) 2022.07.25
약수 구하기  (0) 2022.07.22