Python三级考级通关秘籍:畅游进制转换王国!​

2025-10-13 20:39:38    考级知识点   

为什么数字要"变身"?

我们的语言(十进制): 我们用0,1,2,3,4,5,6,7,8,9这10个数字来计数。数到9,再加1,就变成10(逢十进一)。

计算机的语言(二进制):计算机的大脑很简单,只认识0和1。所有信息都要变成由0和1组成的长长的字符串。这就是计算机的"二进制"语言。

翻译官(十六进制、八进制): 二进制串太长了,写起来好累!所以我们找了两个"缩写翻译官"。

十六进制:用来缩写二进制,让代码更短更漂亮。

八进制:有时也会用来缩写二进制。

十进制

特点: 逢十进一。数字:0,1,2,3,4,5,6,7,8,9。

位权(数字的"座位权力"): 同一个数字,坐在不同的位子上,代表的大小不一样!

例子:365

5坐在个位,权力最小是 10^0(就是1),所以它代表 5 * 1 = 5

6坐在十位,权力是 10^1(就是10),所以它代表 6 * 10 = 60

3坐在百位,权力最大是 10^2(就是100),所以它代表 3 * 100 = 300

总数 = 300 + 60 + 5 = 365

口诀:按权展开,再相加!

二进制

特点: 逢二进一。数字:只有0和1。

核心口诀:按权展开,乘完再相加!

手把手教程:把 (1011)₂变成十进制数

小试牛刀:(11001)₂= (?)₁₀(跟着步骤做!)

核心口诀:除基取余,直到商为0,然后倒着写!

手把手教程:把 (13)₁₀变成二进制数

第一步:写数字,标位置(从右往左,从0开始数!)

数字: 1011

位置编号:第3位 第2位 第1位 第0位

第二步:算权重(每个位置的"实际价值")

权重的算法是:2的(位置编号)次方。

第0位权重:2⁰ = 1

第1位权重:2¹ = 2

第2位权重:2² = 4

第3位权重:2³ = 8

所以,每个数字的实际价值是:1(值) * 8(权) = 8; 0(值) * 4(权) = 0; 1(值) * 2(权) = 2; 1(值) * 1(权) = 1。

第三步:乘起来,再加起来

(1 × 8) + (0 × 4) + (1 × 2) + (1 × 1)

= 8 + 0 + 2 + 1

= 11

最终答案:(1011)₂ = (11)₁₀

小试牛刀:(11001)₂= (?)₁₀(跟着步骤做!)

标位置(从右往左,从0开始):

数字: 11001

位置: 4 3 2 1 0

算权重(2的位置编号次方):

位置4: 2⁴ = 16

位置3: 2³ = 8

位置2: 2² = 4

位置1: 2¹ = 2

位置0: 2⁰ = 1

乘加计算:

(1×16) + (1×8) + (0×4) + (0×2) + (1×1) = 16 + 8 + 0 + 0 + 1 = 25

答案:(11001)₂ = (25)₁₀

核心口诀:除基取余,直到商为0,然后倒着写!

手把手教程:把 (13)₁₀变成二进制数

小试牛刀:(25)₁₀变身成二进制 (请你跟我一起做!)

【考级核心技能2】十进制 → 二进制(除2取余,倒着写)

第一步:连续除以2,并仔细记录余数

13 ÷ 2 = 6 ... 余 1 (这个余数1是个位,最右边)

6 ÷ 2 = 3 ... 余 0

3 ÷ 2 = 1 ... 余 1

1 ÷ 2 = 0 ... 余 1 (这个余数1是最高位,最左边)

第二步:把余数从最后一次计算开始,倒着写出来

我们得到的余数顺序是(从下往上看):1 (最下面) 1 0 1 (最上面)

所以,从高到低写出来就是:1101

最终答案:(13)₁₀ = (1101)₂

验证: 用我们学的【技能1】算一下 (1101)₂是不是等于13? (1×8)+(1×4)+(0×2)+(1×1)=8+4+0+1=13,完全正确!

25 ÷ 2 = 12 ... 余 1

12 ÷ 2 = 6 ... 余 0

6 ÷ 2 = 3 ... 余 0

3 ÷ 2 = 1 ... 余 1

1 ÷ 2 = 0 ... 余 1

倒着写:11001

结论:(25)₁₀ = (11001)₂

十六进制

特点: 逢十六进一。数字:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)。

特别提醒:十六进制有A-F,它们代表10-15!一定要记住!

手把手教程:把 (2B)₁₆变成十进制数

第一步:写数字,标位置(从右往左,从0开始数!)

数字: 2B(B就是11!)

位置编号:第1位 第0位

第二步:算权重(这次是16的(位置编号)次方)

第0位权重:16⁰ = 1

第1位权重:16¹ = 16

所以,每个数字的实际价值是:2(值) * 16(权) = 32; 11(值) * 1(权) = 11。

第三步:乘起来,再加起来

(2 × 16) + (11 × 1)

= 32 + 11

= 43

最终答案:(2B)₁₆ = (43)₁₀

小试牛刀:(FF)₁₆= (?)₁₀(跟着步骤做!)

标位置:

数字: FF(F就是15!)

位置: 1 0

算权重:

位置1: 16¹ = 16

位置0: 16⁰ = 1

乘加计算:

(15×16) + (15×1) = 240 + 15 = 255

答案:(FF)₁₆ = (255)₁₀

【考级核心技能4】十进制 → 十六进制(除16取余,倒着写)

100 ÷ 16 = 6 ... 余 4 (4 < 10,所以直接写4)

6 ÷ 16 = 0 ... 余 6

倒着写:64

答案:(100)₁₀ = (64)₁₆

八进制

特点: 逢八进一。数字:0,1,2,3,4,5,6,7。

手把手教程:把 (31)₈变成十进制数

第一步:写数字,标位置(从右往左,从0开始数!)

数字: 31

位置编号:第1位 第0位

第二步:算权重(这次是8的(位置编号)次方)

第0位权重:8⁰ = 1

第1位权重:8¹ = 8

所以,每个数字的实际价值是:3(值) * 8(权) = 24; 1(值) * 1(权) = 1。

第三步:乘起来,再加起来

(3 × 8) + (1 × 1)

= 24 + 1

= 25

最终答案:(31)₈ = (25)₁₀

小试牛刀:(45)₈= (?)₁₀(跟着步骤做!)

例子:(66)₁₀变身成八进制

标位置:

数字: 45

位置: 1 0

算权重:

位置1: 8¹ = 8

位置0: 8⁰ = 1

乘加计算:

(4×8) + (5×1) = 32 + 5 = 37

答案:(45)₈ = (37)₁₀

【考级核心技能6】十进制 → 八进制(除8取余,倒着写)

66 ÷ 8 = 8 ... 余 2

8 ÷ 8 = 1 ... 余 0

1 ÷ 8 = 0 ... 余 1

倒着写:102

答案:(66)₁₀ = (102)₈

闯关成功总结页:

两大法宝:

其它进制 → 十进制: 按权展开,乘了再加!

十进制 → 其它进制: 除基取余,倒着写!

表示方法:给数字加个"前缀

在Python代码里写数字时,为了让计算机知道我们写的是哪种进制,需要给数字加上一个特殊的前缀。

进制
前缀
例子
对应的十进制值
二进制
0b
0b1011
11
八进制
0o
0o31
25
十进制
123
123
十六进制
0x
0x2B或 0x2b
43

特别提醒:

0b中的 b是 binary(二进制)的缩写。

0o中的 o是 octal(八进制)的缩写。这是一个数字0后面跟一个英文字母o,不是两个零 00!

0x中的 x是 hexadecimal(十六进制)的缩写。

十六进制中的字母 A-F,在代码里不区分大小写,0x2B和 0x2b是完全一样的。

2. 转换函数:让Python帮你

Python提供了几个内置函数,可以轻松地在不同进制之间转换,这些函数返回的是一个字符串。

函数
作用
例子
结果
bin(整数)
将十进制整数转换为二进制字符串
bin(11)
'0b1011'
oct(整数)
将十进制整数转换为八进制字符串
oct(25)
'0o31'
hex(整数)
将十进制整数转换为十六进制字符串
hex(43)
'0x2b'
int(字符串, 进制)
某种进制的字符串转换为十进制整数
int('1011', 2)
11


int('0o31', 8)
25


int('2B', 16)
43

int()函数使用技巧:

第一个参数是字符串。

第二个参数是进制基数,告诉Python你输入的字符串是几进制的。

如果字符串有前缀(如 '0b1011'),第二个参数可以写 0,Python会自动根据前缀判断进制。

例如:int('0b1011', 0)和 int('0o31', 0)都能正确转换。

# -*- coding: utf-8 -*-
"""
Python进制转换综合演示
"""

print("🌟 Python进制转换演示 🌟")
print("=" * 30)

# 案例1:我们手工计算过的 (1011)₂ = (11)₁₀
print("案例1:二进制与十进制")
binary_num = 0b1011 # 在代码中直接写二进制数
print(f"二进制数 0b1011 的十进制值是:{binary_num}")
print(f"用函数验证 bin(11) = {bin(11)}")
print(f"用函数验证 int('1011', 2) = {int('1011', 2)}")
print()

# 案例2: (2B)₁₆ = (43)₁₀
print("案例2:十六进制与十进制")
hex_num = 0x2B # 在代码中直接写十六进制数
print(f"十六进制数 0x2B 的十进制值是:{hex_num}")
print(f"用函数验证 hex(43) = {hex(43)}")
print(f"用函数验证 int('2B', 16) = {int('2B', 16)}")
print()

# 案例3: (31)₈ = (25)₁₀
print("案例3:八进制与十进制")
octal_num = 0o31 # 在代码中直接写八进制数
print(f"八进制数 0o31 的十进制值是:{octal_num}")
print(f"用函数验证 oct(25) = {oct(25)}")
print(f"用函数验证 int('31', 8) = {int('31', 8)}")
print()

# 综合大挑战:验证 (2E)₁₆ = (56)₈ = (46)₁₀ = (101110)₂
print("综合大挑战:验证所有进制都相等")
print(f"十六进制 0x2E = {0x2E}")
print(f"八进制 0o56 = {0o56}")
print(f"十进制 46 = {46}")
print(f"二进制 0b101110 = {0b101110}")
print("结论:所有值都是46,完全正确!")


下一篇
没有了