十进制浮点数转化为二进制的Python代码

本文详细解析了将十进制整数和小数部分转换为二进制的方法,包括整数部分的移位操作和小数部分的循环二进制转换,同时提供了Python代码示例。通过实例演示,学习者可以理解如何将0.25和0.8125转换为二进制并掌握相应的代码技巧。
摘要由CSDN通过智能技术生成

十进制转化为二进制的逻辑:

1、整数部分:

在这里插入图片描述
如图所示,便是浮点数中十进制整数部分转化为二进制的逻辑
整数35,转化为二进制数为100011

2、小数部分

例如:
0.25的二进制
0.252=0.5 取整是0
0.5
2=1.0 取整是1

即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)

0.8125的二进制
0.81252=1.625 取整是1 (整数部分为1)
0.625
2=1.25 取整是1
0.252=0.5 取整是0 (整数部分为0)
0.5
2=1.0 取整是1 (当小数乘以2正好为1时,转化break)

即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)

3、代码

#十进制浮点数转二进制
def dectbin(num):
    # 判断是否为浮点数
    if num == int(num):
        # 若为整数
        integer = '{:b}'.format(int(num))
        return integer
    else:
        # 若为浮点数
        # 取整数部分
        integer_part = int(num)
        # 取小数部分
        decimal_part = num - integer_part
        # 整数部分进制转换
        integercom = '{:b}'.format(integer_part)  #{:b}.foemat中b是二进制
        # 小数部分进制转换
        tem = decimal_part
        tmpflo = []
        # for i in range(accuracy):
        A = True
        while A:
            tem *= 2
            tmpflo += str(int(tem))  #若整数部分为0则二进制部分为0,若整数部分为1则二进制部分为1 #将1或0放入列表
            if tem > 1 :   #若乘以2后为大于1的小数,则要减去整数部分
                tem -= int(tem)
            elif tem < 1:  #乘以2后若仍为小于1的小数,则继续使用这个数乘2变换进制
                pass
            else:    #当乘以2后正好为1,则进制变换停止
                break
        flocom = tmpflo
        return integercom + '.' + ''.join(flocom)

if __name__ == '__main__':
    number = 5
    result = dectbin(number)
    print(f'{number}的二进制数为:{result}')

代码中关于format进制的知识点见链接:
Python——format格式化函数

number = 10
输出:

10的二进制数为:1010

number = 0.8125
输出:

0.8125的二进制数为:0.1101

number = 2020.928
输出:

2020.928的二进制数为:11111100100.111011011001000101101000011100101011000001
  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值