二进制和十进制是两种用途广泛的数的形式,前者用于计算机,后者用于人类社会。二进制与十进制的转换稍显复杂,今天博主就使用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。