知识扩展:进制的详细介绍

目录

一、什么是进制?

二、不同进制之间的转换方法

方法1:十进制转其他进制(除基取余法)

方法2:其他进制转十进制(按权展开法)

方法3:二进制和八进制/十六进制的快速转换

进制转换心算法:超简单的口算技巧!

[例子1:二进制 1101 转十进制](#例子1:二进制 1101 转十进制)

[例子2:二进制 10110 转十进制](#例子2:二进制 10110 转十进制)

心算法的优势:

三、常用进制的特点与用途

十进制(我们最熟悉的)

二进制(计算机的语言)

十六进制(程序员的速记法)

八进制(现在较少用)

四、实际转换练习

练习1:将十进制100转换成其他进制

练习2:将二进制101101转换成十进制和十六进制

五、实用技巧和注意事项

[1. 记住常用对应关系](#1. 记住常用对应关系)

[2. 快速判断大小](#2. 快速判断大小)

[3. 转换小窍门](#3. 转换小窍门)

[4. 负数怎么办?](#4. 负数怎么办?)

六、总结与记忆口诀

转换方法总结:

简单口诀:

最终建议:


一、什么是进制?

简单理解:进制就是"逢几进一"的计数方式。就像平时我们数数:

  • 数到9,下一个就是10(这是十进制,逢10进1)

  • 二进制只有0和1,数到1,下一个就是10(逢2进1)

  • 时钟是60进制(60秒=1分钟,60分钟=1小时)

常见进制

  • 十进制:0,1,2,3,4,5,6,7,8,9,10,11...

  • 二进制:0,1,10,11,100,101,110,111...

  • 八进制:0,1,2,3,4,5,6,7,10,11,12...

  • 十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10...

二、不同进制之间的转换方法

方法1:十进制转其他进制(除基取余法)

核心思想:用十进制数不断除以目标进制的基数,记录余数,直到商为0,最后把余数倒过来写。

例子1:十进制13转二进制(基数是2)

cpp 复制代码
步骤:
13 ÷ 2 = 6 ... 余1 ↑ (最后取)
6  ÷ 2 = 3 ... 余0 ↑
3  ÷ 2 = 1 ... 余1 ↑
1  ÷ 2 = 0 ... 余1 ↑ (最先取)

把余数从下往上读:1101
所以:13(十进制) = 1101(二进制)

例子2:十进制255转十六进制(基数是16)

cpp 复制代码
步骤:
255 ÷ 16 = 15 ... 余15 ↑ (15在十六进制中是F)
15  ÷ 16 = 0  ... 余15 ↑ (15在十六进制中是F)

把余数从下往上读:FF
所以:255(十进制) = FF(十六进制)

简单记忆:除基数,取余数,倒着读。

方法2:其他进制转十进制(按权展开法)

核心思想:把每一位数字乘以基数的"位置次方",然后全部加起来。

位置次方规律:从右往左数,第0位(个位)是基数⁰,第1位是基数¹,第2位是基数²...

例子1:二进制1101转十进制

cpp 复制代码
位置:    3   2   1   0  (从右往左数的位置)
数字:    1   1   0   1
计算:
1 × 2³ = 1 × 8 = 8
1 × 2² = 1 × 4 = 4
0 × 2¹ = 0 × 2 = 0
1 × 2⁰ = 1 × 1 = 1
总和:8 + 4 + 0 + 1 = 13

所以:1101(二进制) = 13(十进制)

例子2:十六进制2A转十进制

cpp 复制代码
十六进制:2   A
对应数字:2   10 (A在十六进制中代表10)

计算:
2 × 16¹ = 2 × 16 = 32
10 × 16⁰ = 10 × 1 = 10
总和:32 + 10 = 42

所以:2A(十六进制) = 42(十进制)

简单记忆:每位乘基数^位置,然后全加起来。

方法3:二进制和八进制/十六进制的快速转换

为什么能快速转换?

  • 1位八进制 = 3位二进制(因为2³=8)

  • 1位十六进制 = 4位二进制(因为2⁴=16)

二进制转八进制(3位一组)

cpp 复制代码
例子:二进制 101 110 011
步骤:
1. 从右往左,每3位分一组(不足3位左边补0)
   101 110 011
2. 每组转换成对应的八进制
   101(二进制) = 1×4 + 0×2 + 1×1 = 5(八进制)
   110(二进制) = 1×4 + 1×2 + 0×1 = 6(八进制) 
   011(二进制) = 0×4 + 1×2 + 1×1 = 3(八进制)
3. 连起来:563

所以:101110011(二进制) = 563(八进制)

八进制转二进制(1位拆3位)

cpp 复制代码
例子:八进制 563 转二进制
步骤:
5(八进制) = 101(二进制)
6(八进制) = 110(二进制)
3(八进制) = 011(二进制)
连起来:101110011

所以:563(八进制) = 101110011(二进制)

二进制转十六进制(4位一组)

cpp 复制代码
例子:二进制 1101 1010 1111
步骤:
1. 从右往左,每4位分一组
   1101 1010 1111
2. 每组转换成对应的十六进制
   1101 = 1×8 + 1×4 + 0×2 + 1×1 = 13 = D
   1010 = 1×8 + 0×4 + 1×2 + 0×1 = 10 = A
   1111 = 1×8 + 1×4 + 1×2 + 1×1 = 15 = F
3. 连起来:DAF

所以:110110101111(二进制) = DAF(十六进制)

十六进制转二进制(1位拆4位)

cpp 复制代码
例子:十六进制 2F8 转二进制
步骤:
2(十六进制) = 0010(二进制)  ← 补0成4位
F(十六进制) = 15(十进制) = 1111(二进制)
8(十六进制) = 1000(二进制)
连起来:0010 1111 1000(去掉前面的0就是10 1111 1000)

所以:2F8(十六进制) = 1011111000(二进制)

进制转换心算法:超简单的口算技巧!

1.心算法的核心思想

一句话总结:从左到右,每次乘以基数,加上下一位数字。

数学原理:这是霍纳法则(Horner's Method)在进制转换中的应用,避免了计算幂次的麻烦。

2.具体操作方法

二进制 → 十进制(最常用)

规则

  1. 从最左边的数字开始

  2. 第一步:这个数字就是初始值

  3. 第二步:初始值 × 2 + 下一位数字 = 新值

  4. 重复:新值 × 2 + 再下一位数字...

  5. 直到最后一位

例子1:二进制 1101 转十进制
cpp 复制代码
一步一步来:
1. 从最左边开始:第一位是 1(这就是初始值)
2. 初始值1 × 2 + 下一位1 = 1×2+1 = 3
3. 新值3 × 2 + 下一位0 = 3×2+0 = 6
4. 新值6 × 2 + 下一位1 = 6×2+1 = 13

完成!结果是13

口算过程

cpp 复制代码
1 → (×2)→ 2 → (+1)→ 3
3 → (×2)→ 6 → (+0)→ 6  
6 → (×2)→ 12 → (+1)→ 13
例子2:二进制 10110 转十进制
cpp 复制代码
心算过程:
1. 第一位是1(初始值)
2. 1×2+0=2
3. 2×2+1=5
4. 5×2+1=11
5. 11×2+0=22

结果:22

推广到其他进制

这个方法适用于任何进制转十进制!只要把乘的"2"换成对应的基数就行。

八进制 → 十进制(基数8)

例子 :八进制 352 转十进制

cpp 复制代码
心算:
1. 第一位是3(初始值)
2. 3×8+5=24+5=29
3. 29×8+2=232+2=234

结果:234

验证:3×8²+5×8¹+2×8⁰=3×64+5×8+2=192+40+2=234 ✓

例子 :十六进制 2A9 转十进制(A=10)

cpp 复制代码
心算:
1. 第一位是2(初始值)
2. 2×16+10=32+10=42
3. 42×16+9=672+9=681

结果:681

三进制、五进制等任意进制

例子:三进制 201 转十进制(基数3)

cpp 复制代码
心算:
1. 第一位是2(初始值)
2. 2×3+0=6+0=6
3. 6×3+1=18+1=19

结果:19

心算法的优势:

  1. 不用背幂次:不需要知道2³、2⁴是多少

  2. 不容易出错:每一步都很简单

  3. 适合口算:数字不大,容易心算

  4. 可中途停止:算到任何一位都知道当前结果

心算法的记忆口诀

cpp 复制代码
从前往后走,
乘基加下位,
步步为营算,
轻松得结果。

分步记忆:

  1. :第一位是起点

  2. :乘以基数(二进制乘2,八进制乘8...)

  3. :加上下一位数字

  4. :重复直到最后

  5. 核心要点:

  6. 通用公式当前值 × 基数 + 下一位数字

  7. 适用所有进制:二进制乘2,八进制乘8,十六进制乘16...

  8. 从左到右:一次处理一位,不需要反向

  9. 从简单开始:先练3-4位的二进制数

  10. 逐步增加:尝试5-6位,然后8位

  11. 混合练习:练完二进制,练八进制、十六进制

  12. 实际应用:看到车牌号、房间号等,尝试转换成二进制

三、常用进制的特点与用途

十进制(我们最熟悉的)

  • 特点:有10个数字(0-9),逢10进1

  • 用途:日常生活计算

二进制(计算机的语言)

  • 特点:只有0和1,逢2进1

  • 用途:计算机内部所有数据都用二进制表示

  • 为什么用二进制:电子设备最容易表示两种状态(开/关,高电压/低电压)

十六进制(程序员的速记法)

  • 特点:有16个符号(0-9,A-F),逢16进1

  • 用途:计算机编程中简写二进制(1位十六进制=4位二进制)

  • 例子

cpp 复制代码
二进制:1111 1111 0000 1111(太长不好记)
十六进制:FF0F(简洁多了)

八进制(现在较少用)

  • 特点:有8个数字(0-7),逢8进1

  • 用途:Unix/Linux系统中的文件权限表示

四、实际转换练习

练习1:将十进制100转换成其他进制

cpp 复制代码
1. 转二进制:
100 ÷ 2 = 50 ... 0
50  ÷ 2 = 25 ... 0
25  ÷ 2 = 12 ... 1
12  ÷ 2 = 6  ... 0
6   ÷ 2 = 3  ... 0
3   ÷ 2 = 1  ... 1
1   ÷ 2 = 0  ... 1
结果:1100100

2. 转十六进制:
100 ÷ 16 = 6 ... 4(余数4)
6   ÷ 16 = 0 ... 6(余数6)
结果:64

验证:6×16 + 4 = 96+4 = 100 ✓

练习2:将二进制101101转换成十进制和十六进制

cpp 复制代码
1. 转十进制:
位置:  5  4  3  2  1  0
数字:  1  0  1  1  0  1
计算:
1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 0 + 8 + 4 + 0 + 1
= 45

2. 转十六进制:
先分组:0010 1101(前面补0)
0010 = 2
1101 = 13 = D
结果:2D

验证:2D(十六进制) = 2×16 + 13 = 32+13 = 45 ✓

五、实用技巧和注意事项

1. 记住常用对应关系

cpp 复制代码
二进制  十进制  十六进制
0000    0       0
0001    1       1
0010    2       2
0011    3       3
0100    4       4
0101    5       5
0110    6       6
0111    7       7
1000    8       8
1001    9       9
1010    10      A
1011    11      B
1100    12      C
1101    13      D
1110    14      E
1111    15      F

2. 快速判断大小

  • 二进制看起来数字大(比如1000),实际值小(十进制8)

  • 十六进制看起来数字小(比如F),实际值大(十进制15)

3. 转换小窍门

  • 十进制转二进制:也可以用"减权法",看这个数包含哪些2的幂次
cpp 复制代码
比如:45 = 32 + 8 + 4 + 1
32是2⁵,8是2³,4是2²,1是2⁰
对应位置写1:101101
  • 二进制转十进制:从右往左,每位依次代表1,2,4,8,16,32...遇到1就加上

4. 负数怎么办?

计算机中用"补码"表示负数,对初学者来说,先掌握正数的转换即可。

六、总结与记忆口诀

转换方法总结:

  1. 十转其他:除基数,取余数,倒着读

  2. 其他转十:每位乘(基数^位置),然后加起来

  3. 二/八/十六互转:利用"3位二进制=1位八进制","4位二进制=1位十六进制"

简单口诀:

  • 看到十进制:想"除几取余"

  • 看到二进制:想"1,2,4,8,16..."的加法

  • 看到十六进制:想"4位一组"

  • 不确定时:先转到十进制作为"中转站"

最终建议:

不要死记硬背!多练习几个例子,自然就掌握了。比如:

  • 把你的年龄转换成二进制和十六进制

  • 把你的生日(日)转换成二进制

  • 把100以内的质数都转换一遍

掌握进制转换就像学一门外语,开始可能觉得陌生,但用多了就自然熟练了。这是理解计算机如何工作的第一步!

相关推荐
im_AMBER1 小时前
Leetcode 67 长度为 K 子数组中的最大和 | 可获得的最大点数
数据结构·笔记·学习·算法·leetcode
Slaughter信仰2 小时前
图解大模型_生成式AI原理与实战学习笔记(第四章)
人工智能·笔记·学习
charlie1145141912 小时前
深入理解CC++的编译与链接技术8:Windows和Linux是如何搜寻动态库的?
c语言·c++·动态库·编译·编译技术
martian6652 小时前
详解高阶数学领域-信息论与深度学习:互信息在对比学习中的应用
人工智能·深度学习·学习
Wiktok2 小时前
TailwindCSS学习路径方法总结
学习·css3·tailwindcss
缘三水2 小时前
【C语言】12.指针(2)
c语言·开发语言·指针
FFF团团员9092 小时前
树莓派学习笔记6:摄像头的基本使用
笔记·学习
d111111111d2 小时前
在SM32F103C8T6中MCU和MPU的区别,都有什么各自的优点,缺点,都可以用来干什么。
笔记·stm32·单片机·嵌入式硬件·学习
solicitous3 小时前
QA和测试得区别
学习