以下代碼用於實現十進制轉二進制、八進制、十六進制:
# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 獲取用戶輸入十進制數 dec = int(input("輸入數字:")) print("十進制數為:", dec) print("轉換為二進制為:", bin(dec)) print("轉換為八進制為:", oct(dec)) print("轉換為十六進制為:", hex(dec))
執行以上代碼輸出結果為:
python3 test.py 輸入數字:5 十進制數為:5 轉換為二進制為: 0b101 轉換為八進制為: 0o5 轉換為十六進制為: 0x5
python3 test.py 輸入數字:12 十進制數為:12 轉換為二進制為: 0b1100 轉換為八進制為: 0o14 轉換為十六進制為: 0xc
具體實現
十進制到二進制:
def dec2bin(num): l = [] if num < 0: return '-' + dec2bin(abs(num)) while True: num, remainder = divmod(num, 2) l.append(str(remainder)) if num == 0: return ''.join(l[::-1])
十進制到八進制:
def dec2oct(num): l = [] if num < 0: return '-' + dec2oct(abs(num)) while True: num, remainder = divmod(num, 8) l.append(str(remainder)) if num == 0: return ''.join(l[::-1])
十進制到十六進制:
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] def dec2hex(num): l = [] if num < 0: return '-' + dec2hex(abs(num)) while True: num,rem = divmod(num, 16) l.append(base[rem]) if num == 0: return ''.join(l[::-1])
十進制數轉化成二進制數(float)
while True: number=input("請輸入一個正數:(輸入q退出程序)") if number in ['q','Q']: break elif not float(number)>0: print("請輸入一個正數(輸入q退出程序):") else: number=float(number) array1=[] array2=[] integer=int(number) floa=number-integer while integer!=0: array1.append(integer%2) integer=integer//2 else: array1.append(0) array1.reverse() while floa>0.00001: array2.append(int(2*floa)) floa=floa*2-int(floa*2) else: array2.append(0) array1.append(".") array=array1+array2 for x in array: print(x,end="") print("\n")
