Python十進位小數和二進位小數相互轉換的實現方式

來源:互聯網
上載者:User
這篇文章主要介紹了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(第一次所得到為最高位,最後一次得到為最低位)


def dec2bin(x):  x -= int(x)  bins = []  while x:    x *= 2    bins.append(1 if x>=1. else 0)    x -= int(x)  return binsprint(dec2bin(.8125))      # [1, 1, 0, 1]

二進位小數 ⇒ 十進位小數

小數點後,從左向右,每位分別表示


def bin2dec(b):  d = 0  for i, x in enumerate(b):    d += 2**(-i-1)*x  return dprint(dec2bin(0.8125))        # [1, 1, 0, 1]print(bin2dec(dec2bin(0.8125)))        # 0.8125

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.