计算机组成原理第二章 数据的表示和运算——2.1数制与编码
计算机组成原理第二章 数据的表示和运算——数制与编码
一、基本概念与核心知识点
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)
建议结合王道考研教材补充习题与案例分析。