快捷搜索:  汽车  科技

如何使用python语言完成进制转换(万般进制千机变)

如何使用python语言完成进制转换(万般进制千机变)运算规则:十进制的运算规则是“满十进一,借一当十”;二进制的运算规则是“满二进一,借一当二”;八进制的运算规则是“满八进一,借一当八”;十六进制的运算规则是“满十六进一,借一当十六”。 基数,顾名思义就是进制中基础的数字,其特点是不可再拆分。二进制的基数是0、1,八进制的基数是0~7,十六进制的基数是0~F(即0~9 A~F,A代表十进制中的10,B代表11,以此类推,F代表15)。下面列出四种进制的基数对比表,让各位小伙伴能更好地理解。 相比于拥有古老历史的十进制,二进制只有三百多年的历史。二进制由德国天才大师莱布尼茨创造,在他短短几页的手稿中精炼描述了这个美妙精密的进制系统。他曾写下如下的话:“1与0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都来自上帝。”二进制发展如此迅速,是因为计算机能够便捷地使用它。计算机是由逻辑电路组成,逻辑电路通常只有两个状态,通电或者断电

一、进制起源介绍

如何使用python语言完成进制转换(万般进制千机变)(1)

(一)十进制起源介绍

十进制作为日常生活中使用最普遍的进制,拥有着古老的起源,据考古研究发现,在距今五千年前,现伊朗境内存在着十进制记数出现的痕迹——小泥椎体计数法。从古至今,其实不止出现过十进制一种计数法,还出现过五进制、二十进制、六十进制。不过为什么只有十进制留存下来?据说最大的可能是因为十进制符合人类有十根手指的特点,人类可以便捷地使用自身身体来计数,换句话说如果人类是有十二、十三根手指,那么现在最流行的计数法可能就是十二或者十三进制了。

(二)二进制、八进制、十六进制起源介绍

相比于拥有古老历史的十进制,二进制只有三百多年的历史。二进制由德国天才大师莱布尼茨创造,在他短短几页的手稿中精炼描述了这个美妙精密的进制系统。他曾写下如下的话:“1与0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都来自上帝。”二进制发展如此迅速,是因为计算机能够便捷地使用它。计算机是由逻辑电路组成,逻辑电路通常只有两个状态,通电或者断电,二进制中的唯二两数“1”“0”正好能分别完美地表示这两种状态。不过由于二进制数的长度过长(进制越小,数的长度越长),占用内存过大。为了缩短数的长度,减少内存的占用,计算机科学家发明了八进制和十六进制,因为八和十六正好是二的三次方和四次方,所以二进制与八进制和十六进制之间能够很方便地进行转化。

二、二进制、八进制、十六进制概念介绍

对于每一种进制,都分为基数和运算规则两个部分。

基数,顾名思义就是进制中基础的数字,其特点是不可再拆分。二进制的基数是0、1,八进制的基数是0~7,十六进制的基数是0~F(即0~9 A~F,A代表十进制中的10,B代表11,以此类推,F代表15)。下面列出四种进制的基数对比表,让各位小伙伴能更好地理解。

如何使用python语言完成进制转换(万般进制千机变)(2)

运算规则:十进制的运算规则是“满十进一,借一当十”;二进制的运算规则是“满二进一,借一当二”;八进制的运算规则是“满八进一,借一当八”;十六进制的运算规则是“满十六进一,借一当十六”。

十进制转化成其他进制:以二进制为例,十进制整数除以2取余,若商数不小于2,再对商数除以2,重复这个过程直到商小于2,此时以最后一个商数为最高位,第一个余数为最低位,以这个为方向,将剩下的余数排列并补充入开头商数到结尾余数中间,得到对应的二进制数,例如:7/2=3……1 3/2=1……1,也就是说7的二进制为111。十进制转换成八进制和十六进制与上述过程相似,只要把2的位置改成8或16就行。

其他进制转化成十进制:以二进制为例,一个整数从右到左,依次列为1、2~n,然后将第n位的数乘2的(n-1)次方,之后把所有积相加得到对应的十进制数。(例如:111 1*2^2 1*2^1 1*2^0=7)。八进制和十六进制转换成十进制与上述过程相似,只要把2的位置改成8或16就行。

相信各位小伙伴看到这里,会想到简单的十进制数很容易转化成其他进制数,但是若是我们想把一个复杂的数转化进制,肯定不能用手算,那该如何做呢?

接下来,小编将向大家介绍如何使用Python来解决复杂的数转化进制。

三、Python中的进制转换

(一)Python中各进制的数的表示

在十进制、二进制、八进制、十六进制中,如果在不指明某个数使用的进制的情况下,是很难分清该数的大小的,比如111,在十进制、二进制、八进制、十六进制中都是可能存在的,但是其含义是不相同的。因此需要一些符号来区分出它们的身份。在Python中,会在二进制数前端加上0b(binary),在八进制数前加上0o(octonary),在十六进制数前加上0x(hexadecimal)(注意这里都是数字0)。

(二)bin() oct() hex()介绍

Python的内置函数中有现成的bin()、oct()、hex()可以解决十进制向二进制、八进制、十六进制转化的问题。

bin()来源于binary(二进制),其作用是把十进制整数转化成二进制。

oct()来源于octonary(八进制),其作用是把十进制整数转化成八进制。

hex()来源于hexadecimal(十六进制),其作用是把十进制整数转化成十六进制

它们的语法结构相同:command(x),其中x为一个int变量。

注意:上述函数中只能输入整数,也就是说Python不能转化小数为其他进制。

接下来,我们看看如何在Python中使用上述函数来把十进制整数转化为其他进制。为了更好地展示这个过程,小编编了一个程序,具体命令行如下所示:


def transform(num system): if type(num)==int: if system == 1: print(str(num) '转化成二进制是:' str(bin(num))) elif system == 2: print(str(num) '转化成八进制是:' str(oct(num))) elif system == 3: print(str(num) '转化成十六进制是:' str(hex(num))) else: print('只能输入1、2、3') else: print('请输入整数') num=eval(input('请输入需要转化的十进制整数:')) system=eval(input('请输入想要转化的进制\n (1为二进制,2为八进制,3为十六进制):')) transform(num system)

假设我们想要把十进制的100转化成十六进制,我们可以在控制台中输入100和3,结果如下:

如何使用python语言完成进制转换(万般进制千机变)(3)

当然,能够由十进制转化成二进制、八进制、十六进制,我们就能进行逆运算,把二进制、八进制、十六进制转化成十进制。其实,这个操作更加简单。

若想把二进制整数a、八进制整数b、十六进制整数c分别转化成十进制,则需要先把a、b、c转换为字符串,再在a、b、c前分别加上"0b"、"0o"、"0x",再利用int()转换,例如:print(int('0b' '101' 2)),输出为十进制的5。为了让各位小伙伴更好地理解,小编编了一个交互程序,具体命令行如下所示:

def transform(num system): if type(num)==int: if system == 1: print('二进制的' str(num) '转化为十进制是' str(int('0b' str(num) 2))) elif system == 2: print('八进制的' str(num) '转化为十进制是' str(int('0o' str(num) 8))) elif system == 3: print('十六进制的' str(num) '转化为十进制是' str(int('0x' str(num) 16))) else: print('请输入1、2、3') else: print('请输入整数') num=eval(input('请输入需要转化为十进制的整数:')) system=eval(input('请输入想要该数字的原进制\n (1为二进制,2为八进制,3为十六进制):')) transform(num system)

我们在控制台中输入64 3,结果如下图:

如何使用python语言完成进制转换(万般进制千机变)(4)

至此,进制和在Python中如何转化进制已经介绍完了,相信各位小伙伴看到这,对于进制和在Python中如何转化进制有了一定的了解,如果各位小伙伴想了解更多关于Python然后转化进制以及Python方面的知识,如果你也想学习Python,那么帮忙转发一下然后再关注小编后私信“01”可以得到我整理的这些Python资料了(私信方法:点击我头像进我主页有个上面有个私信按钮)

我自己是一名从事了多年的Python老程序员,小编为大家准备了7月份新出的python编程学习资料,免费分享给大家!

如何使用python语言完成进制转换(万般进制千机变)(5)

喜欢小编文章的可以点个赞关注小编哦,小编每天都会给大家更新文章。

猜您喜欢: