在考研 408(计算机学科专业基础综合)中,进制问题是计算机组成原理模块的核心基础内容,主要涉及二进制、八进制、十进制、十六进制的转换,以及它们在计算机数据表示(如原码、反码、补码、浮点数)和运算(如加减运算、溢出判断)中的应用。以下从考试角度详细解析进制问题的核心考点和理解要点。
一、进制转换的核心考点(必须熟练掌握)
1. 二进制 ↔ 十六进制
- 二进制转十六进制:从右向左每 4 位一组(不足补 0),每组转换为 1 位十六进制数。 例:
0000 0000 0000 0000 0000 0000 0111 1111
→ 每 4 位分组为0000
0000
0000
0000
0000
0000
0111
1111
,对应十六进制为00 00 00 7F
,即0x0000007F
。 - 十六进制转二进制:每 1 位十六进制数展开为 4 位二进制数(不足补 0)。 例:
0x7F
→0111 1111
。
2. 二进制 ↔ 十进制
- 二进制转十进制:按权展开求和。 例:二进制
1011
= \(1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 = 11\)。 - 十进制转二进制:
- 整数部分:除 2 取余,逆序排列。
- 小数部分:乘 2 取整,顺序排列(注意可能无限循环,需按精度截断)。 例:十进制
13
→ 二进制1101
。
3. 二进制 ↔ 八进制
- 二进制转八进制:从右向左每 3 位一组(不足补 0),每组转换为 1 位八进制数。
- 八进制转二进制:每 1 位八进制数展开为 3 位二进制数(不足补 0)。 例:八进制
077
→ 二进制111111
。
4. 有符号数的进制转换(补码为核心)
- 计算机中整数通常以补码形式存储,转换时需注意符号位:
- 正数:原码 = 反码 = 补码,直接转换。
- 负数:先求绝对值的二进制,再取反加 1 得到补码。 例:十进制
-1
的 8 位补码为11111111
(二进制),对应十六进制0xFF
。
二、考研重点:进制与计算机数据表示
1. 定点数的表示与运算
- 原码、反码、补码的范围:
- 溢出判断(核心考点):
- 加法溢出:两个同符号数相加,结果符号与原符号相反,则溢出。 例:8 位补码中,
127(01111111) + 1(00000001)= 10000000
(-128),符号位从 0 变 1,溢出。 - 减法溢出:两个异符号数相减,结果符号与被减数符号相反,则溢出。
- 进位法:最高位进位与符号位进位不同则溢出(适用于补码运算)。
- 加法溢出:两个同符号数相加,结果符号与原符号相反,则溢出。 例:8 位补码中,
2. 浮点数的规格化表示(IEEE 754 标准)
- 浮点数格式:符号位 (S) + 阶码 (E) + 尾数 (M)。
- 进制转换步骤:
- 将十进制数转换为二进制(如
10.5 → 1010.1
)。 - 规格化:移动小数点使尾数首位为 1(如
1.0101×2^3
)。 - 计算阶码:偏移后的值(如单精度阶码偏移量 127,
3+127=130→10000010
)。 - 尾数:去掉首位 1,保留小数部分(如
0101
补零至 23 位)。
- 将十进制数转换为二进制(如
- 例:
10.5
的单精度浮点数二进制表示为:0
(符号位)10000010
(阶码)01010000000000000000000
(尾数),对应十六进制0x41480000
。
三、典型题型与解题思路
1. 进制转换与补码运算
例题:若 8 位补码表示的二进制数为10101010
,其对应的十进制数是多少? 解析:
- 符号位为 1,负数,需求原码: 补码
10101010
→ 减 1 得反码10101001
→ 取反得原码11010110
(绝对值为106
)。 - 结果:
-106
。
2. 溢出判断
例题:8 位补码中,计算98 + (-64)
是否溢出? 解析:
98
补码:01100010
,-64
补码:11000000
。- 相加:
01100010 + 11000000 = 10010010
(符号位为 1,结果为负数)。 - 实际结果:
98-64=34
(正数),但计算结果为负数,说明溢出(原因:8 位补码范围为 – 128~127,98+(-64)=34
未溢出,此处可能题目设计错误,需注意实际运算逻辑)。 注:实际计算中,98+(-64)=34
未超范围,无溢出,需警惕题目陷阱(如是否为无符号数)。
3. 浮点数规格化
例题:将十进制数-0.375
转换为单精度浮点数的十六进制表示。 解析:
-0.375
二进制:-0.011
→ 规格化:-1.1×2^-2
。- 符号位:1。
- 阶码:
-2 + 127 = 125 → 01111101
。 - 尾数:去掉首位 1,剩余
1
补零至 23 位:10000000000000000000000
。 - 二进制表示:
1 01111101 10000000000000000000000
→ 十六进制:0xBE800000
。
四、备考建议
- 熟练掌握转换技巧:
- 二进制与十六进制的快速转换(四位一组)是核心,需做到眼算无误。
- 补码与十进制的互转需结合符号位和取反加 1 规则。
- 理解溢出本质:
- 溢出仅发生在有符号数运算中,无符号数超过范围时仅产生进位 / 借位,不叫溢出。
- 用 “符号位变化” 或 “进位异或” 法快速判断溢出。
- 结合真题训练:
- 分析历年真题中进制相关题目(如 2017 年第 3 题、2020 年第 4 题),总结出题规律(如浮点数规格化、补码运算溢出)。
- 注意细节陷阱:
- 无符号数与有符号数的区别(如
0xFF
作为无符号数是 255,作为补码是 – 1)。 - 浮点数的隐藏位(如 IEEE 754 单精度尾数隐含首位 1)。
- 无符号数与有符号数的区别(如
五、总结
进制问题在考研 408 中虽基础,但贯穿计算机组成原理的核心知识点(如数据表示、运算器设计)。复习时需将进制转换与补码、浮点数、溢出判断等结合,避免孤立记忆转换方法。通过大量例题练习,培养 “看到二进制数即联想到补码值、看到浮点数即拆解为三部分” 的思维习惯,才能在考试中快速准确作答。
本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客