zl程序教程

您现在的位置是:首页 >  其他

当前栏目

十进制与二进制互换

2023-04-18 16:05:25 时间

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)