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手写进制转换(本文仅探讨从十进制转二进制,八进制,十六进制)