前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十进制与二进制互换

十进制与二进制互换

作者头像
算法与编程之美
发布2021-12-21 18:28:17
4790
发布2021-12-21 18:28:17
举报
文章被收录于专栏:算法与编程之美

1.引言

一般来说python里共有十进制,二进制,八进制和十六进制,我们一般使用的都是十进制,二进制是机械语言,它在计算机和IT系统方面有着广泛运用,计算机通常使用它来处理、读取和写入数据。因此,掌握十进制和二进制的转换,有利于我们读懂机械语言,更好的理解计算机。

2.问题

每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。

示列

输入: 5

输出: 2

  1. 方法
    1. .我们首先使用bin函数使10进制的数变为2进制的数或者使用短除法使10进制数变为2进制数
    2. .使用for……in遍历2进制数的每一个字符,使‘1’变为0,使‘0’变为1,再将其依次存入一个新的列表
    3. .使用for……in遍历新列表里的数,使用2进制转10进制的数学算法,使2进制反码变成10进制数

4实验结果与讨论

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单

n = int(input())

m = bin(n)

print(m)

list_1 = []

k = 0

for i in m[2:]: #十进制使用bin函数转换成二进制后,是0b开头,我们并不需要0b

if i == '0':

i = 1

list_1.append(i)

if i == '1':

i = 0

list_1.append(i)

for j in range(len(list_1)):

k += list_1[j] * pow(2, len(list_1) - 1 - j)

print(k)

5.结语

我们需要注意,用bin函数转换成的二进制是用字符串表示的,我们再遇1变0、遇0变1时,1、0为字符,if条件的等号右边也应该是字符,并且这也需要我们对for……in遍历有一定的掌握。

实习编辑:王晓姣

稿件来源:深度学习与文旅应用实验室(DLETA)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档