首頁  >  文章  >  後端開發  >  Python十進制小數和二進制小數相互轉換的實作方式

Python十進制小數和二進制小數相互轉換的實作方式

黄舟
黄舟原創
2017-10-12 11:12:259107瀏覽

這篇文章主要介紹了Python實現的十進制小數與二進制小數相互轉換功能,結合具體實例形式詳細分析了二進制與十進制相互轉換的原理及Python相關實現技巧,需要的朋友可以參考下

本文實例講述了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即0.8125的二進位是0.

11011

#(第一次得到為最高位,最後一次得到為最低位)

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

以上是Python十進制小數和二進制小數相互轉換的實作方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn