python手写进制转换(本文仅探讨从十进制转二进制,八进制,十六进制)
- 分析:
- 二进制:
- 代码:
- 八进制:
- 十六进制:
- 小结
看了 这篇博客,就想记录一下,免得忘了。
分析:
二进制:
我们都知道,二进制就是逢2进1,但是如何把一个十进制数转化成二进制呢?
比如有一个十进制数:6,我们可以把这个十进制数除以2,得到他的商,和余数,再将得到的商除以2,得到商和余数,直到商为0.
我们可以看到,将得到的余数从下到上连起来,就是这个十进制数的二进制表达。我们去计算器里验证一下:
可以看到,跟我们的计算结果一样。
那下面,我们就可以用代码来实现了:
代码:
a = int(input('请输入一个十进制的正整数:'))
def er(a):
s = ''
while a>0:
b = a//2 # a/2得到商b
c = str(a%2) # a%2得到余数 c 转化为str类型
s = c+s # 直接用+运算符进行字符串连接,注意,因为余数是从下到上连接,所以是c+s
a = b # 然后再将b的值赋给a,继续运算,直到a == 0
return s
这里的运算时可以化简的,我要写注释,就没有化简,化简的工作就交个你们了。
八进制:
同上
十六进制:
同上
这里需要注意一点就是,十六进制里有A,B,C,D,E,F等字样,这在十进制里是没有的,那么我们就需要建一个列表来装这些字样。
def shiliu(a):
sl = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
s = ''
while a>0:
b = a//16
c = a%16
s = sl[c] + s
a = b
return s
其实从这里可以看出来,我根本就不会化简这个代码 哭唧唧 请各位大佬帮忙化简下。哈哈
小结
根据这个方法,你可以进行任何进制的转化,比如我转一个7进制,15进制,19进制等等,都是可以的。
更多推荐
python手写进制转换(本文仅探讨从十进制转二进制,八进制,十六进制)
发布评论