内容正文:
专题二 进制
【考纲要求】
考试条目
(2)掌握进制的概念及常用进制互相转换的方法。
【课时安排】
2课时
【知识梳理】
进制
一、进制
进制(Number System),也称为进位计数制,是一种表示数值的方法。它包含两个核心要素:
基数(Radix):指该进制中允许使用的基本数字符号的个数。
例如:十进制有 10 个基本符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9,所以它的基数是 10。
位权(Positional Weight):指同一个数字符号在不同位置上所代表的数值不同。位权是基数的整数次幂(指数由位置决定)。
位置通常从右向左数,从 0 开始递增。
例如:十进制数 345 中:
最右边的 '5' 在个位(位置 0),位权是 10^0 = 1,表示 5 * 1 = 5。
中间的 '4' 在十位(位置 1),位权是 10^1 = 10,表示 4 * 10 = 40。
最左边的 '3' 在百位(位置 2),位权是 10^2 = 100,表示 3 * 100 = 300。
所以 345 = 3*100 + 4*10 + 5*1 = 300 + 40 + 5。
核心公式: 一个 N 进制数 ... ABC.DEF ... 的值可以表示为:
... + A * N^k + B * N^m + C * N^n + D * N^(-1) + E * N^(-2) + F * N^(-3) + ...
(其中 k, m, n 等是整数位的位置索引,从 0 开始递增;-1, -2, -3 等是小数位的位置索引,从 -1 开始递减)
二、 计算机中常见的进制
1.十进制(Decimal) - 基数为 10
符号: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
表示法: 通常不加后缀,或用下标 10 表示。
人类最熟悉的进制,用于日常计算和表示。
2.二进制(Binary) - 基数为 2
符号: 0, 1 (只有两个状态)
表示法: 常用前缀 0b 或后缀 B 表示(如 0b1011 或 1011B)。
计算机硬件的基础: 数字电路中的开关状态(开=高电平≈1,关=低电平≈0)、磁介质的磁化方向、光盘的坑与平面等,天然适合表示二值状态。计算机内部的所有信息(数据、指令)最终都以二进制形式存储和处理。
优点: 物理实现简单可靠,抗干扰能力强,运算规则简单。
缺点: 表示较大的数需要很长的位数,人类读写困难。
3.八进制(Octal) - 基数为 8
符号: 0, 1, 2, 3, 4, 5, 6, 7
表示法: 常用前缀 0(零)或后缀 O(字母 O)表示(如 017 或 17O)。注意 0 前缀在某些编程语言(如 C, Python)中表示八进制。
4.十六进制(Hexadecimal / Hex) - 基数为 16
符号: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15)
表示法: 常用前缀 0x 或后缀 H 表示(如 0x1F 或 1FH)。
计算机科学的核心: 因为 16 = 2^4,1 位十六进制数恰好对应 4 位二进制数(1 个 Nibble)。一个字节(Byte = 8 bits)正好可以用 2 位十六进制数简洁地表示。
广泛应用:
内存地址: 内存地址通常用十六进制表示(如 0x7FFF)。
机器码/汇编指令: 指令代码常用十六进制书写。
颜色表示(Web): RGB 颜色值如 #FF0000 表示红色(R=255, G=0, B=0)。
调试信息: 查看内存或寄存器内容时常用十六进制。
优点: 相比二进制大大缩短了表示长度,方便人类读写和记忆,且与二进制转换极其方便。
三、 进制转换方法详解
1. R进制 转 十进制 (R → 10)
方法:按权展开相加法
步骤:
写出 R 进制数的每一位数字。
确定每一位数字所在的位置(索引),整数部分从右向左,索引从 0 开始递增;小数部分从左向右,索引从 -1 开始递减。
计算每一位数字乘以基数的位置次幂(即 数字 * R^位置索引)。
将所有乘积相加,得到的结果就是对应的十进制数。
例子:
二进制 0b1011 → 十进制:
整数部分:1 (位置 3), 0 (位置 2), 1 (位置 1), 1 (位置 0)
小数部分:0 (位置 -1), 1 (位置 -2)
计算:1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 + 0 * 2^(-1) + 1 * 2^(-2)
= 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 + 0 * 0.5 + 1 * 0.25
= 8 + 0 + 2 + 1 + 0 + 0.25
= 11.25
八进制 017.4 → 十进制:
整数部分:1 (位置 1), 7 (位置 0)
小数部分:4 (位置 -1)
计算:1 * 8^1 + 7 * 8^0 + 4 * 8^(-1)
= 1 * 8 + 7 * 1 + 4 * 0.125
= 8 + 7 + 0.5
= 15.5
十六进制 0x2A.8 → 十进制:
整数部分:2 (位置 1), A(10) (位置 0)
小数部分:8 (位置 -1)
计算:2 * 16^1 + 10 * 16^0 + 8 * 16^(-1)
= 2 * 16 + 10 * 1 + 8 * 0.0625
= 32 + 10 + 0.5
= 42.5
2. 十进制 转 R进制 (10 → R)
方法: 需要将整数部分和小数部分分别转换,然后合并结果。
整数部分转换:除基取余法(倒序排列)
将十进制整数部分 除以 R,得到商和余数。
将得到的余数作为 R 进制数的 最低位。
用上一步得到的商 继续除以 R,记录新的余数。
重复步骤 3,直到商为 0。
将每次得到的余数从下往上(最后得到的余数是最高位)排列起来,得到 R 进制数的整数部分。
小数部分转换:乘基取整法(正序排列)
将十进制小数部分 乘以 R。
记录乘积的整数部分(即使为 0 也要记录),作为 R 进制小数部分的 最高位(小数点后第一位)。
将乘积的小数部分(去掉整数部分后剩下的纯小数)继续乘以 R。
重复步骤 2 和 3,记录每次的整数部分。
直到乘积的小数部分变为 0,或者达到所需的精度为止。
将每次得到的整数部分从上往下(第一次得到的整数是最高位)排列起来,得到 R 进制数的小数部分。
合并: 将转换后的整数部分和小数部分用小数点连接起来。
例子:
十进制 25.375 → 二进制:
整数部分 25:
25 / 2 = 12 余 1 (最低位)
12 / 2 = 6 余 0
6 / 2 = 3 余 0
3 / 2 = 1 余 1
1 / 2 = 0 余 1 (最高位)
整数部分结果:11001
小数部分 0.375:
0.375 * 2 = 0.75 整数部分 0 (最高位)
0.75 * 2 = 1.5 整数部分 1
0.5 * 2 = 1.0 整数部分 1 (此时小数部分为 0,停止)
小数部分结果:011 (注意最高位是第一个 0)
合并:25.375₁₀ = 11001.011₂ (或 0b11001.011)
十进制 192 → 十六进制:
整数部分 192:
192 / 16 = 12 余 0 (最低位) -> 0
12 / 16 = 0 余 12 (最高位) -> C (十六进制符号)
整数部分结果:C0 (注意余数从上往下读是 C0,但按规则是从下往上读余数 0 和 C,组合成 C0)
小数部分为 0。
结果:192₁₀ = C0₁₆ (或 0xC0)
3. 二进制 与 八进制/十六进制 互转
原理: 利用 8 = 2^3 和 16 = 2^4 的关系,进行分组转换。
二进制 → 八进制 (2 → 8):
以小数点为中心,分别向左(整数部分)和右(小数部分)将二进制数按 3 位一组进行分组。
整数部分向左分组,不足 3 位时在最左边补 0。
小数部分向右分组,不足 3 位时在最右边补 0。
将每一组 3 位二进制数转换为对应的 1 位八进制数(利用 000=0, 001=1, ..., 111=7)。
将转换后的八进制数按顺序连接起来,小数点位置不变。
八进制 → 二进制 (8 → 2):
将八进制数的每一位数字,独立地转换为对应的 3 位二进制数(如 5 → 101)。
将所有转换后的 3 位二进制数按顺序连接起来。
去除整数部分最高位可能的无效 0 和小数部分最低位可能的无效 0(除非需要特定位数)。
二进制 → 十六进制 (2 → 16):
以小数点为中心,分别向左(整数部分)和右(小数部分)将二进制数按 4 位一组进行分组。
整数部分向左分组,不足 4 位时在最左边补 0。
小数部分向右分组,不足 4 位时在最右边补 0。
将每一组 4 位二进制数转换为对应的 1 位十六进制数(利用 0000=0, 0001=1, ..., 1001=9, 1010=A, ..., 1111=F)。
将转换后的十六进制数按顺序连接起来,小数点位置不变。
十六进制 → 二进制 (16 → 2):
将十六进制数的每一位数字(包括 A-F),独立地转换为对应的 4 位二进制数(如 B(11) → 1011)。
将所有转换后的 4 位二进制数按顺序连接起来。
去除整数部分最高位可能的无效 0 和小数部分最低位可能的无效 0(除非需要特定位数)。
【限时练习】
1. 下列二进制数中,转换为十进制后数值最大的是( )
A. 10101
B. 11001
C. 11100
D. 10011
【答案】C
2.十进制数 37 转换为二进制数是( )
A. 100101
B. 101001
C. 110001
D. 100011
【答案】A
3.八进制数 45 转换为十进制数是( )
A. 35
B. 36
C. 37
D. 38
【答案】C
4.十六进制数 2A 转换为十进制数是( )
A. 42
B. 40
C. 38
D. 36
【答案】A
5.二进制数 101101 转换为八进制数是( )
A. 55
B. 56
C. 57
D. 58
【答案】A
6.二进制数 1101010 转换为十六进制数是( )
A. 3A
B. 4A
C. 5A
D. 6A
【答案】D
7.进制数 22 转换为二进制数是( )
A. 10100
B. 10110
C. 11010
D. 11100
【答案】B
8.十六进制数 3C 转换为二进制数是( )
A. 101000
B. 111000
C. 101100
D. 111100
【答案】D
9.下列关于进制转换的说法正确的有( )
A. 二进制数转换为八进制数时,从右往左每三位一组
B. 八进制数转换为二进制数时,每一位转换为三位二进制数
C. 十六进制数转换为二进制数时,每一位转换为四位二进制数
D. 十进制数转换为二进制数时,整数部分和小数部分的转换方法相同
【答案】ABC
10.下列进制数表示正确的有( )
A. (1010)₂
B. 0o34
C. 0x2A
D. 123₈
【答案】ABCD
11.二进制数的后缀标识可以是 B 或₂。( )
【答案】√
12.八进制数中最大的数字是 8。( )
【答案】×
13.十六进制数中用字母 A-F 表示 10-15。( )
【答案】√
14.十进制数转换为十六进制数时,只能先转换为二进制数,再转换为十六进制数。( )
【答案】×
【内容小结】
学科网(北京)股份有限公司
$$