加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

编程实现十进制转二进制程序

(2022-03-24 20:11:28)
分类: 研究-学习
记得在2020年下学期,我在学习教材中的取余、整除等运算时尝试着利用“除二取余”实现了十进制转成二进制的程序。但是前两天再准备弄这个程序时,怎么也实现不了。能够实现列表,但是将列表转换成数字时出现了问题。
n=int(input("输入一个数,不超过五位:"))
y=[]
while n>=0:
    a=n%2
    y.append(a)
    n=n//2
y=y[::-1]
for i in y:
    print(y[i],end='')
主要是最后一行的y[i]理解上出现了问题,实际上这个问题在之前的寻找小偷的程序中就出现了,当时自己还没有理解透彻,导致这次的程序中出现了意想不到的问题,一开始我怎么也想不通,在同事的提醒下,原来在for i in y中,这里的i已经指代了y中的各个元素,不需要再用y[i],否则就出现了指代上的错乱。

n=int(input("输入一个数,不超过五位:"))
y=[]
while n>=0:
    a=n%2
    y.append(a)
    n=n//2
    if n==0:
        break
#print(y)
y=y[::-1]
print(y)
for i in y:
    print(i,end='')
这样就可以实现了。
实际上,将最后两行变更为
for i in range(len(y)):
    print(y[i],end='')
也可以实现。同时也免除了y[i]与i的理解难题。
参考了网络上的方法,也是采用的列表,但是在列表转化为字符的方法上,用了‘’.join(arry[::-1]),方法简单有效。
 '''
十进制转二进制
原理:采用除2取余,逆序排列输出。
实现:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后依次翻转排序即可得到二进制数,在Python中我们采”//”(地板除)的方法实现转换
# 十进制整数转二进制
def decToBin(num):
    arry = []   #定义一个空数组,用于存放2整除后的商
    while True:
        arry.append(str(num % 2))  #用列表的append方法追加
        num = num // 2   #用地板除求num的值
        if num == 0:     #若地板除后的值为0,那么退出循环
            break
    return "".join(arry[::-1]) #列表切片倒叙排列后再用join拼接
print(decToBin(10))
输出结果:1010
'''


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有