Python基础 - Python数字类型与进制转换

Python数字类型与进制转换

Posted by 王富杰 on Friday, February 14, 2025

一、数字类型的参数与返回值

在文章Python基本数据类型之数字型中我们学习了数字类型包括int 和 float。知道使用 age = 18 可以定义一个变量,申请一块内存空间存入18,然后将内存空间绑定给变量age。那么这个申请内存动作是谁完成的呢?其实是int()实现了这个功能。age = int(18)实现了一样的效果。()中传入的值就叫做参数。int()运行完会生成一个值,叫做返回值,我们使用age接收了这个返回值。

二、数字类型与进制转换

我们日常中的数学计算都是以十进制进行计算的,即满10进1。但是计算机只能识别电信号,电信号只有高低电平两种,对应二进制的0和1,因此计算机只能识别二进制。二进制是满2进1。此外在计算机表示中还有两个常用的进制,分别是八进制和十六进制。

2.1、其他进制转换为十进制

首先我们看下十进制。例234,可以看成 210^2 + 310^1 + 4*10^0。 同样的二进制也是这么计算的。如图所示: 图片加载失败 上图中演示了二进制如何转换为十进制。可以用同样的方法将八进制和十六进制转换为十进制。如:

八进制转十进制
234 -> 2*8^2 + 3*8^1 + 4*8^0 -> 128 + 24 + 4 = 256
十六进制转十进制
36d -> 3*16^2 + 5*16^1 + 13*16^0 -> 768 + 96 + 13 = 877

2.2、十进制转换为其他进制

十进制转为其他进制最常用的就是连除法。 图片加载失败 如上所示,从二进制我们可以看出,用十进制数除2求余,将余数倒序排列得到的就是二进制数。十进制转为八进制是除8取余,同样的十进制转为十六进制是除19取余。这是就不再演示。

2.3、二进制、八进制、十六进制互相转换

由于2^3=8,所以每三位二进制可以转换为一个八进制数。同理,每四位二进制可以转换为一个八进制数 图片加载失败 如图所示,二进制转八进制可以每三位做一个分组。分别求出这三位对应的求值,得到的就是八进制。八进制转换为二进制,同样的每位用连除法得到最终的二进制。

三、Python中的进制转换方法

python中内置了各种进制间的转换方法

# 十进制转二进制
>>> print(bin(12))
0b1100
# 十进制转八进制
>>> print(oct(12))
0o14
# 十进制转十六进制
>>> print(hex(12))
0xc

可以看到,不同进制在python中使用了不同的前缀,二进制使用的是0b、八进制是0o、十六进制前缀是0x。接下来我们看下其他进制怎么转换为十进制。

# 其他进制转换为十进制
>>> print(int('0b1100', 2))
12
>>> print(int('0o14', 8))
12
>>> print(int('0xc', 16))
12

可以看到,使用int()就可以完成其他进制到十进制的转换。那二进制如何转换为八进制呢,这里我们可以先把二进制转换为十进制,再通过oct()就可以实现了。

「真诚赞赏,手留余香」

WangFuJie Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付