本文實例講述了Python實現的十進制小數與二進制小數相互轉換功能。分享給大家供大家參考,具體如下:
十進制小數 ? 二進制小數
乘2取整
對十進制小數乘2得到的整數部分和小數部分,
整數部分即是相應的二進制數碼,
再用2乘小數部分(之前乘后得到新的小數部分),又得到整數和小數部分。
如此不斷重復,直到小數部分為0或達到精度要求為止.
第一次所得到為最高位,最后一次得到為最低位
如:
0.25的二進制
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.25的二進制為 0.01 ( 第一次所得到為最高位,最后一次得到為最低位)
0.8125的二進制
0.8125*2=1.625 取整是1
0.625*2=1.25 取整是1
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.8125的二進制是0.1101(第一次所得到為最高位,最后一次得到為最低位)
def dec2bin(x): x -= int(x) bins = [] while x: x *= 2 bins.append(1 if x>=1. else 0) x -= int(x) return bins print(dec2bin(.8125)) # [1, 1, 0, 1]
二進制小數 ? 十進制小數
小數點后,從左向右,每位分別表示
def bin2dec(b): d = 0 for i, x in enumerate(b): d += 2**(-i-1)*x return d print(dec2bin(0.8125)) # [1, 1, 0, 1] print(bin2dec(dec2bin(0.8125))) # 0.8125
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com