Python 二进制与十进制的研究


二进制和十进制是两种用途广泛的数的形式,前者用于计算机,后者用于人类社会。二进制与十进制的转换稍显复杂,今天博主就使用Python编写了一个小程序来实现快捷且正确的转换,在此与大家分享一下,希望能帮助到python的初学者。

了解二进制与十进制数转换方法

首先我们要了解一下二进制数与十进制数之间的相互转换的方法。在这里博主给大家找了两张图,后面的转换函数将要用到这些转换方法。

二进制转为十进制

在这里插入图片描述

十进制转为二进制

在这里插入图片描述

中阶研究

目标:将1-10000的十进制数转换成二进制数并写入Excel。

源码

程序代码:
注:第三方模块xlwt安装方法将在附录展示。

#导入函数
import xlwt

#二进制转十进制
def two_ten(two_n):
    total = 0
    two_n = list(str(two_n))#把数字转换成列表
    two_n.reverse()#反转列表
    times = 0#记录2的指数
    #遍历列表
    for i in two_n:
    	number = int(i)*(2**times)
    	total = total+int(number)#计算十进制数
    	times += 1#指数加1
    return total
#十进制转二进制
def ten_two(ten_n):
    total = []
    #开始相除
    while ten_n != 0:
        if ten_n %2 == 1:#余数是1
            ten_n = (ten_n-1)/2
            total.append(1)
        else:#余数是0
            total.append(0)
            ten_n = ten_n/2
    total.reverse()#反转列表
    if ten_n == 1:
        a_total = 1
    else:
	#把列表变成文本
        a_total = ''.join('%s'%number for number in total)
    return int(a_total)


if __name__ == '__main__':
    result = []
    for i in range(1,10001):
        two_n = ten_two(i)#将十进制的i转换成二进制
        if two_ten(two_n) == i:#验算
            result.append([two_n,i])#正确则将二进制数和对应的十进制数写入列表
        else:#错误
            raise Exception(f'{two_n},{i}')#引发错误

    wbk = xlwt.Workbook()#新建一个Excel表
    sheet = wbk.add_sheet('二进制与十进制的转换表')#新建一个sheet
    h = 0#行数变量
    for a in result:#遍历最终列表
	#写入二进制数与十进制数
        sheet.write(h,0,a[0])
        sheet.write(h,1,a[1])
        h += 1
    wbk.save('二进制与十进制表.xlsx')#保存

    print('Done.')

程序分析

转换函数

二进制与十进制相互转换的函数:

#二进制转十进制
def two_ten(two_n):
    total = 0
    two_n = list(str(two_n))#把数字转换成列表
    two_n.reverse()#反转列表
    times = 0#记录2的指数
    #遍历列表
    for i in two_n:
    	number = int(i)*(2**times)
    	total = total+int(number)#计算十进制数
    	times += 1#指数加1
    return total
#十进制转二进制
def ten_two(ten_n):
    total = []
    #开始相除
    while ten_n != 0:
        if ten_n %2 == 1:#余数是1
            ten_n = (ten_n-1)/2
            total.append(1)
        else:#余数是0
            total.append(0)
            ten_n = ten_n/2
    total.reverse()#反转列表
    if ten_n == 1:
        a_total = 1
    else:
	#把列表变成文本
        a_total = ''.join('%s'%number for number in total)
    return int(a_total)

主程序

循环1~10000十进制数,转换为二进制数并写入Excel:

if __name__ == '__main__':
    result = []
    for i in range(1,10001):
        two_n = ten_two(i)#将十进制的i转换成二进制
        if two_ten(two_n) == i:#验算
            result.append([two_n,i])#正确则将二进制数和对应的十进制数写入列表
        else:#错误
            raise Exception(f'{two_n},{i}')#引发错误

    wbk = xlwt.Workbook()#新建一个Excel表
    sheet = wbk.add_sheet('二进制与十进制的转换表')#新建一个sheet
    h = 0#行数变量
    for a in result:#遍历最终列表
	#写入二进制数与十进制数
        sheet.write(h,0,a[0])
        sheet.write(h,1,a[1])
        h += 1
    wbk.save('二进制与十进制表.xlsx')#保存

    print('Done.')

运行结果展示

初始表格:
在这里插入图片描述
美化后:
在这里插入图片描述

高阶研究

目标:找到所有11位的回文二进制数及其十进制数并写入Excel。

详细信息

详细请看文章:
《Python 制作11位二进制回文数及其十进制数表》
Python 制作11位二进制回文数及其十进制数表

附录

​下载模块xlwt的方法:
1.打开WindowsPowershell;
2.输入 pip install --user xlwt 命令;
3.按下enter(或return)键即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拖泥鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值