"""
十進制轉換成n進制
例子: 100轉換成8進制-----144
256除8 商32 余0
32除8 商4 余0
4除8 商0 余4
每次結果的余數進棧, 最后出棧
"""
def decimal_conversion(num, base):
if base <= 0:
print("base error")
return
if not num:
print(0)
return
if num < base:
print(num)
return
# 商
quotient = num // base
# 余數
remainder = num % base
# 存放結果的棧
conver_stack = [remainder]
while quotient >= base:
remainder = quotient % base
quotient = quotient // base
conver_stack.append(remainder)
conver_stack.append(quotient)
for i in range(len(conver_stack)):
print(conver_stack.pop(), end="")
print()
decimal_conversion(8644197605847452079, 2) # 111011111110110010110111110110001110000110100011100100110101111
decimal_conversion(1025, 2) # 10000000001
decimal_conversion(3, 2) # 11
decimal_conversion(1, 2) # 1
decimal_conversion(0, 2) # 0
decimal_conversion(100, 8) # 144