十进制与二进制互换
1.引言
一般来说python里共有十进制,二进制,八进制和十六进制,我们一般使用的都是十进制,二进制是机械语言,它在计算机和IT系统方面有着广泛运用,计算机通常使用它来处理、读取和写入数据。因此,掌握十进制和二进制的转换,有利于我们读懂机械语言,更好的理解计算机。
2.问题
每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。
示列
输入: 5
输出: 2
- 方法
- .我们首先使用bin函数使10进制的数变为2进制的数或者使用短除法使10进制数变为2进制数
- .使用for……in遍历2进制数的每一个字符,使‘1’变为0,使‘0’变为1,再将其依次存入一个新的列表
- .使用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)
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击