Python十进制与二进制小数互转算法详解

Leo
Leo
发布时间:2026-10-13 | 2人浏览过
原创

本文详细解析利用Python进行十进制小数与二进制小数相互转换的实现方法。通过“乘2取整”算法将十进制小数转为二进制,以及按权展开求和法将二进制小数还原为十进制。文中提供核心代码逻辑与具体数值演算示例,帮助开发者深入理解浮点数底层表示及转换逻辑。

本文详细介绍如何使用Python实现十进制小数与二进制小数之间的相互转换功能,供读者参考学习。

十进制小数转换为二进制小数

核心算法:乘2取整法

具体操作是对十进制小数部分乘以2,分离出结果中的整数部分和小数部分。

计算得到的整数部分即为对应的二进制位数值。

随后,将上一步得到的小数部分再次乘以2,继续分离新的整数和小数部分。

重复上述乘2取整过程,直到小数部分变为0,或达到预设的精度要求为止。

在转换过程中,第一次计算得到的整数位是二进制小数的最高位(MSB),最后一次计算得到的是最低位(LSB)。

具体转换示例如下:

将0.25转换为二进制:

第一步:0.25 * 2 = 0.5,取整数部分为0; 第二步:0.5 * 2 = 1.0,取整数部分为1。

因此,0.25的二进制表示为0.01(其中第一次得到的0为最高位,最后一次得到的1为最低位)。

将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]

二进制小数转换为十进制小数

转换方法是将二进制小数点后各位数字从左至右,分别乘以2的负幂次方(即2^-1, 2^-2...),然后求和。

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

此外,为方便读者进行各类数值计算与格式转换,推荐参考以下在线工具:

在线任意进制转换工具: http://tools.jb51.net/transcoding/hexconvert

科学计算器在线使用_高级计算器在线计算: http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器: http://tools.jb51.net/jisuanqi/jsq

如需进一步了解Python相关知识,可查阅本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望上述内容能对您的Python编程实践提供帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表