计算机组成原理第二章 数据的表示和运算——数制与编码
一、基本概念与核心知识点
1.1 数制系统基础
1.1.1 进位计数制
- 定义:以固定基数(如2、8、10、16)表示数值的系统
 - 核心要素: 
- 基数(R):允许的数码个数(如二进制R=2)
 - 位权:第i位的权值为R^i
 
 - 常见进制对照表: 
十进制 二进制 八进制 十六进制 0 0000 0 0 1 0001 1 1 5 0101 5 5 9 1001 11 9 10 1010 12 A  
1.1.2 数制转换方法
- 整数转换: 
- 除基取余法(十进制→其他进制)
例:将十进制数25转换为二进制 25 ÷ 2 = 12 余 1 → 最低位 12 ÷ 2 = 6 余 0 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 → 最高位 结果:11001B - 乘基取整法(十进制小数→其他进制)
 
 - 除基取余法(十进制→其他进制)
 - 小数转换: 
- 定点数转换:通过权值展开式计算
 - 浮点数转换:分离符号、阶码、尾数分别转换
 
 
1.1.3 常见进制特点
| 进制 | 应用场景 | 优势 | 局限性 | 
|---|---|---|---|
| 二进制 | 计算机硬件、逻辑电路 | 易于物理实现(高低电平) | 数值位数多,书写繁琐 | 
| 八进制 | 早期计算机系统、权限表示 | 三位二进制对应一位八进制 | 现代计算机已不常用 | 
| 十六进 | 内存地址、机器码表示 | 四位二进制对应一位十六进制 | 需要记忆16个符号 | 
1.2 编码系统详解
1.2.1 BCD码(二-十进制编码)
- 定义:用4位二进制数表示1位十进制数
 - 主要类型: 
- 8421码(有权码): 
- 权值:8 4 2 1
 - 示例:5 → 0101
 
 - 余3码(无权码): 
- 8421码 + 0011
 - 特点:无单个0,适合BCD加减运算
 
 - 2421码(有权码): 
- 权值:2 4 2 1
 - 特点:具有自补性(如5的2421码是1011)
 
 
 - 8421码(有权码): 
 
1.2.2 字符编码
- ASCII码: 
- 7位编码,共128个字符
 - 格式:
0010 0000(空格)→1111 1111(DEL) 
 - Unicode编码: 
- 统一编码方案,支持多语言
 - UTF-8编码规则: 
字符范围 UTF-8编码格式 1字节(ASCII) 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx  
 
1.2.3 校验码
- 奇偶校验码: 
- 增加1位校验位,使总1的个数为奇数(奇校验)或偶数(偶校验)
 - 检测能力:仅能检测奇数个位错误
 
 - 海明码: 
- 校验位分布:第2^k位(k=0,1,2,…)
 - 校验方程组:
S1 = P1 ⊕ D1 ⊕ D3 ⊕ D5 ⊕ D7 S2 = P2 ⊕ D2 ⊕ D3 ⊕ D6 ⊕ D7 S4 = P4 ⊕ D4 ⊕ D5 ⊕ D6 ⊕ D7 
 - 循环冗余校验(CRC): 
- 生成多项式:如CRC-16的生成多项式为x¹⁶+x¹⁵+x²+1
 - 计算步骤: 
- 在数据后补r个0(r为生成多项式次数)
 - 进行模2除法
 - 余数作为校验码
 
 
 
二、重点选择题解析
2.1 数制转换真题
真题1(2023年408统考)
题目:将十进制数-127转换为8位二进制补码,其表示为( )。
 A. 10000001 B. 11111111 C. 10000000 D. 11111110
解析:
- 原码:符号位1 + 绝对值原码 → 
11111111 - 补码:原码除符号位外取反+1 → 
10000001 - 答案:A
易错点:忘记符号位固定为1,或补码转换时溢出处理错误。 
真题2(2022年408统考)
题目:下列二进制数中最小的是( )。
 A. 1010010B B. 00101000BCD C. 512O D. 235H
解析:
- 转换为十进制: 
- A: 1010010B = 82
 - B: 00101000BCD = 28
 - C: 512O = 5×64 + 1×8 + 2×1 = 346
 - D: 235H = 2×256 + 3×16 + 5 = 565
 
 - 答案:B
易错点:混淆不同进制的转换方法,尤其是BCD码的特殊处理。 
2.2 编码相关真题
真题3(2021年408统考)
题目:用海明码对8位数据(D7-D0)进行检/纠错,若能纠正一位错,则校验位至少需要( )位。
 A. 2 B. 3 C. 4 D. 5
解析:
- 海明不等式:2ᵏ ≥ n + k + 1(n=8)
 - 解得k=4时,2⁴=16 ≥ 8+4+1=13
 - 答案:C
易错点:误用不等式方向或计算错误。 
真题4(2016年408统考)
题目:C语言中unsigned short x=65530;转换为unsigned int y=x;后,y的机器数为( )。
 A. 00007FFAH B. 0000FFFAH C. FFFF7FFAH D. FFFFFFFAH
解析:
- 65530的十六进制:0xFFFA
 - 无符号数扩展:高位补0 → 0x0000FFFA
 - 答案:B
易错点:混淆符号扩展与无符号扩展规则。 
三、核心概念深度解析
3.1 补码的特殊性质
3.1.1 补码范围
- n位补码:-2ⁿ⁻¹ ≤ x ≤ 2ⁿ⁻¹-1
 - 示例:8位补码范围是-128~+127
 
3.1.2 补码运算规则
- 加法规则:[X+Y]补 = [X]补 + [Y]补 mod 2ⁿ
 - 减法规则:[X-Y]补 = [X]补 + [-Y]补 mod 2ⁿ
 
3.1.3 溢出判断
- 单符号位法:符号位进位与最高数值位进位不同则溢出
 - 双符号位法:符号位不同则溢出(01正溢出,10负溢出)
 
3.2 BCD码的修正方法
| 修正类型 | 修正条件 | 修正操作 | 
|---|---|---|
| 8421码 | 和≥10 | 加6(0110) | 
| 余3码 | 和≥16 | 减3(0011) | 
| 2421码(5以上) | 结果≥5 | 加3(0011) | 
四、综合应用题解析
4.1 浮点数规格化问题
题目:将十进制数1999转换为IEEE 754单精度浮点数格式。
 步骤:
- 规格化:1999 = 1.999×2¹⁰
 - 符号位S=0(正数)
 - 阶码E=10+127=137 → 10001001B
 - 尾数M=999×2²³(取23位)
 - 最终表示:
0 10001001 11111001100110011001101 
五、易错点与高频考点
5.1 常见错误类型
| 错误类型 | 典型示例 | 正确做法 | 
|---|---|---|
| 补码范围混淆 | 认为8位补码最大为255 | 最大+127,最小-128 | 
| BCD码修正错误 | 8421码相加后未修正直接使用 | 检查是否≥10后加6 | 
| 海明码校验位计算错误 | 校验位位置分配错误 | 按2ᵏ规则分配校验位 | 
5.2 高频考点总结
- 数制转换:重点掌握二进制与十六进制的快速转换技巧
 - 补码运算:溢出判断与符号扩展规则
 - BCD码应用:8421码与ASCII码的转换
 - 校验码设计:海明码校验位计算与CRC多项式生成
 
六、附录:思维导图与示意图
6.1 数制与编码知识导图
6.2 海明码结构示意图
数据位:D7 D6 D5 D4 D3 D2 D1 D0
校验位:P4 P3 P2 P1
排列方式:
P4 P3 D7 P2 D6 D5 D4 P1 D3 D2 D1 D0
 
- 各进制转换的详细算法推导
 - BCD码在计算器电路中的实现
 - CRC校验的硬件实现电路图
 - 历年408真题完整解析(2009-2023)
建议结合王道考研教材补充习题与案例分析。 
