计算机组成原理·第 3 版
习题解答
习题 1
1、简要解释下列名词术语
数字计算机:一种能存储程序,能自动连续地对各种数字化信息进行处理的快速工具。
硬件:是指组成计算机系统的设备实体,如 CPU、存储器、I/O 设备等。
软件:泛指各类程序、文档等。
CPU:即中央处理器,是由运算器和控制器组成的计算机硬件系统的核心部件。
主存储器:位于主机内部,用来存放 CPU 需要使用的程序和数据的部件。
外存储器:位于主机外部,用来存放大量的需要联机保存、但 CPU 暂不使用的程序和
数据的部件。
外部设备:位于主机之外,和主机进行信息交换的输入设备或输出设备。
信息的数字化表示:注意,信息的数字化表示包含了两层含义,即:用数字代码表示各
种信息,用数字信号(电平、脉冲)表示数字代码。
存储程序工作方式:事先编制程序,事先存储程序,自动、连续地执行程序。
模拟信号:在时间上连续变化的电信号,用信号的某些参数模拟信息。
数字信号:在时间上或空间上断续变化的电信号,依靠彼此离散的多位信号的组合表示
信息。
脉冲信号:在时间上离散的电信号,利用脉冲的有无表示不同的状态。
电平信号:在空间上离散的电信号,利用信号电平的高低表示不同的状态。
系统软件:为保证计算机系统能够良好运行而设置的基础软件。
应用软件:用户在各自的应用领域中为解决各类问题而编写的软件。
操作系统:负责管理和控制计算机系统的硬件资源、软件资源与运行的核心软件,为用
户提供软件的开发环境和运行环境。
语言处理程序:将源程序转换为目标程序的一类系统软件,包括各种解释程序、编译程
序、汇编程序。
物理机:是指能够执行机器语言程序的实际的计算机。
虚拟机:是指通过配置软件,扩充机器功能后所形成的计算机。
总线:一组能为多个部件分时共享的公共的信息传送线路。
数据通路宽度:是指数据总线一次能并行传送的数据位数。
数据传输率:是指数据总线每秒钟传送的数据量。
接口:泛指两个部件的交接部分。
通道:能够执行专用的通道指令,用来管理 I/O 操作的控制部件。
字节:8 位二进制代码称为一个字节。
字长:一般指参加一次定点运算的操作数的位数。
2、数字计算机的主要特点是什么?
第 1 页 共 67 页
答:应该从信息的表示方法和计算机的工作方式来说明它的主要特点。
有 5 点:能自动连续地执行程序、运算速度快、运算精度高、存储能力强、通用性好。
3、计算机有哪些主要性能指标?
答:主要从计算机的运算能力、存储能力、传送能力、处理能力等几方面考虑。
主要性能指标包括基本字长、运算速度、存储容量(主存容量和外存容量)、数据传输
率、外设配置和软件配置等。
4、冯•诺依曼思想包含哪些要点?
答:冯•诺依曼思想奠定了现代计算机的基本结构思想,它很好地解决了信息如何表示
才能被计算机识别和计算机采用何种工作方式才能自动地对信息进行处理等基本问题。它包
含三个要点:
(1)采用二进制代码表示信息,以便计算机识别;
(2)采用存储程序工作方式,才能使计算机自动地对信息进行处理;
(3)由存储器、运算器、控制器、输入/输出设备等功能部件组成计算机硬件系统。
5、信息的数字化表示包含哪两层含义?
答:信息的数字化表示不仅要考虑在计算机中如何表示各种原始信息,还要考虑在物理
机制上怎样实现。所以,第一层含义:用数字代码表示各种信息;第二层含义:用数字信号
表示数字代码。
6、用数字信号表示代码有什么优点?
答:每位数字信号只有两种可能的状态,因而可从物理实现、可靠性、数值范围与精度、
信息类型、信息处理等方面说明。有以下 5 点:
(1)在物理上容易实现信息的表示与存储;
(2)抗干扰能力强,可靠性高;
(3)数值的表示范围大,表示精度高;
(4)能表示极其广泛的信息类型;
(5)能用数字逻辑技术处理信息。
7、编译方式和解释方式对源程序的处理有什么区别?
答:在编译方式中,计算机执行编译程序,将源程序全部转换为目标程序,然后由计算
机单独执行目标程序,即先翻译,后执行。
在解释方式中,计算机执行解释程序,将源程序逐段转换为对应的目标程序段,每转换
一段便执行该段目标程序,直到整个源程序被解释执行完,即边翻译,边执行。
8、为什么要对计算机系统进行层次划分?
答:计算机系统是由硬、软件组成的复杂系统,进行层次划分,有助于根据不同需要,
从不同层次去分析、构造、调试、维护和扩充计算机系统。
9、软件系统一般包含哪些部分?试列出你所熟悉的几种系统软件。
答:前面几道题都是涉及基本概念的题,从这道题开始,则是与实际应用有关。
软件系统一般包含系统软件和应用软件两部分。所熟悉的系统软件可根据实际情况列
出,如操作系统(Windows、Linux、……等等),C 编译程序,数据库管理系统(SQL Server、
Sybase、……等等)。
第 2 页 共 67 页
10、以你所熟悉的一种计算机系统为例,列举出该系统所用的 CPU 型号,时钟频率,字长,
主存容量,外存容量,所连 I/O 设备的名称等。
答:例如使用奔腾芯片的计算机系统,CPU 为 Pentium-200,时钟频率为 200MHz,字
长 32 位,主存容量为 256MB,硬盘容量为 40GB,I/O 设备包括键盘、鼠标、显示器、喷墨
打印机等。
11、什么是控制流驱动?什么是数据流驱动?
答:传统的诺依曼机采用控制流(指令流)驱动方式:按指令序列依次读取指令,根据
指令所包含的控制信息对数据进行处理,在程序执行过程中,始终由指令流驱动计算机工作。
数据流驱动方式是对传统诺依曼机工作方式的根本改变:只要数据准备好,有关指令就
可并行执行,如数据流计算机。
12、你曾在计算机的机器指令级、操作系统级、汇编语言级或高级语言级上做过工作或练习?
或调用过该级的功能?举出所做的工作或所调用的功能名。
答:按实际情况回答,比如用汇编语言或高级语言编写过程序等等。
13、试分析微型机、小型和大型计算机的特点。
答:微型机采用了集成度很高的电子元件和总线结构,一般采用单 CPU 结构,通用性
强,轻便、小巧、价格低,操作使用方便,普及最广,适用于个人电脑;
小型机,软硬件规模大于微机,结构复杂,一般采用多 CPU 架构,具有高可靠性、可
用性和高服务性等特征,一般用作中小型高性能服务器;
大型机,一般用作大型的高性能服务器,具有专用的处理器指令集和专用应用软件,运算速
度高,存储容量大,通用性强,功能完备,支持大量用户同时使用,具有强大的数据处理能
力,价格昂贵。
第 3 页 共 67 页
习题 2
1. 简要解释下列名词术语
位权:在 r 进位制的数中,每个数位的数码所表示的数值等于该数码乘以一个与它所在
数位相关的常数,这个常数称为该位的位权,简称权。
基数:在进位制中,各数位允许选用的数码个数,称为该进位制的基数,它等于该进位
制各数位所允许的最大数码值加 1。
真值:在数的绝对值之前配上正(+;通常可省略)、负(-)符号表示的数称为该数
的真值。例如用十进制数表示的真值:159,-132。用二进制数表示的真值;1011、-1011
等。
机器数:在计算机内部使用的,连同数的符号一起数码化的数称为机器数。
原码:让数码序列的最高位为符号位(0 表示正,1 表示负),其余部分为数(真值)的
绝对值,这个数码序列称为该数的原码表示。
补码:它是机器数的一种表示方法,如果数为正,则正数的补码与原码形式相同;如果
数为负,则负数的补码是将负数原码除符号位不变外,其余各位取反,末位再加 1。
定点数:在计算机中,小数点位置固定不变的数叫做定点数。
浮点数:小数点位置不固定,可随需要浮动的数称为浮点数。
规格化浮点数:是指浮点数的尾数部分用带符号定点小数表示,当 R=2 时,尾数用原
码表示时其绝对值满足1/ 2 |
| 1M≤
< (补码时是-1≤M<-1/2 或 1/2≤M<1)的浮点数称为规
格化浮点数。
ASCII 码:是美国信息交换标准码的英文全名的简称,它与 ISO646、GB1988 标准兼容;
它是 128 个常用字符的数码化表示,如字符 A 的 ASCII 码为 1000001B。
算术移位:算术移位是指对具有数值大小的数,将数码位置左、右移动,使其数值发生
变化,但数的符号位不变的一类移位操作。
逻辑移位:逻辑移位是指将(二进制)代码序列视为纯逻辑意义上的代码组合,只是将
数码位置循环移动或非循环移动,使数码位置发生变化,但没有正负性质,也没有数值大小
变化的问题。
2. 将二进制数(1111010.00111101)2 转换为八进制与十六进制数。
解:将二进制数转换为八进制数或十六进制数,可分别采用二—八缩写形式或二—十六
缩写形式将二进制数分段对应转换即可。
对于二—八缩写形式,则是三位二进制数对应一位八进制数,而二—十六缩写形式,则
是四位二进制数对应一位十六进制的数。分段时,以小数点为基准,向左每三位(或四位)
一组分段,高位不够补 0;向右每三位(或四位)一组分段、低位不够补 0。
根据上面所述,本题答案如下:
(1111010.00111101)2=(172.172)8
(1111010.00111101)2=(7A.3D)16
3. 将二进制数(101010.01)2 转换为十进制数与 BCD 码。
解:求二进制数中为 1 的各位的权值之和,则得到该二进制数的相应十进制数:
(101010.01)2=(
将十进制数的各位均用四位二进制代码表示,即得到 BCD 码:
22− )10=(42.25)10
2
1
+
5
2
+
3
2
+
(101010.01)2=(42.25)10=(01000010.00100101)BCD
注意:在 BCD 码中,最高位 0 和最低位的 0(包括与它们相邻的 0)不能省掉。本例
最高位的 0 不能省掉。
第 4 页 共 67 页
4. 将八进制数(37.2)8 转换为十进制数与 BCD 码
解:方法一 由按权相加法计算,即将八进制数展开成多项式求和的形式,求得的和为
相应的十进制数,然后再写为 BCD 码。
(37.2)8=(3×81+7×80+2× 18− )10=(31.25)10
(37.2)8=(31.25)10=(00110001.00100101)BCD
方法二 将八进制数转换为二进制数(即每位八进制数码用三位二进制数表示或称用二
—八缩写形式书写,再将二进制数转换为十进制数与 BCD 码。
(37.2)8=(011111.010)2=(24+23+22+21+20+ 22− )10=(31.25)10=(00110001.00100101)BCD
5. 将十六制数(AC.E)16 转换为十进制数与 BCD 码
解:方法一 将十六进制数展开成多项式求和的形式,求得的和即为相应的十进制数,
然后再书写成 BCD 码。
(AC.E)16=10×(16)1 + 12×(16)0 + 14×
(16)−
1
10
=(160+12+0.875)10=(172.875)10
=(000101110010.100001110101)BCD
方法二 将十六进制数转换为二进制数(即每位十六进制数码用四位二进制数表示或称
为每位用二—十六缩写形式书写),然后把二进制转换为十进制数,进而可书写为 BCD 码。
1
−
2
−
+
2
+
+
2
2
2
7
2
3
2
5
2
+
(AC.E)16=(10101100.1110)2=(
+
=(128+32+8+4+0.5+0.25+0.125)10
=(172.875)10
=(000101110010.100001110101)BCD
6. 将十进制数(75.34)10 转换为 8 位二进制数、八进制数及十六进制数。
解:方法一 先用减权定位法将(75.34)10 转换为二进制数,然后再转换为八进制数与十
)10
+
2
3
−
六进制数。
整数部分减权比较
Xi
75-64=11
1 (高位)
11 < 32
11 < 16
11-8=3
3 < 4
3-2=1
1-1=0
0
0
1
0
1
1(低位)
位权
64
32
16
8
4
2
1
整数部分转换结果:(75)10=(1001011)2
小数部分减权比较
0.34 < 0.5
0.34-0.25=0.9
M
Xi
0
1
M
位权
0.5
0.25
M
∴(75.34)10=(1001011.01…)2
题目要求转换为 8 位二进制数,故对上述结果采用 0 舍 1 入的舍入法,得到:
(75.34)10≈(1001011.1)2=(113.4)8=(4B.8)16
方法二 按除基取余法将整数 75 转换为二进制整数;按乘基取整法将(0.35)10 转换为二
进制小数。两部分合起来即得到结果,然后再转为八进制数和十六进制数。
第 5 页 共 67 页
整数部分转换:
2 75 余数 二进制数位
2 37 1(低位) X0=1
2 18 1 X1=1
2 9 0 X2=0
2 4 1 X3=1
2 2 0 X4=0
2 1 0 X5=0
0 1(高位) X6=1
转换结果:(75)10=(1001011)2
小数部分转换:
小数部分乘以 2
0.34×2=0.68
0.68×2=1.36
M
取整数部分
0
1
M
∴(75.34)10=(1001011.01…)2
题目要求转换为 8 位二进制数,故对上述结果采用 0 舍 1 入的舍入法,得到:
(75.34)=(1001011.01…)2≈(1001011.1)2=(113.4)8=(4B.8)16
7. 将十进制数
转换为二进制数
13
128
解:将以 2n 为分母的分数转换为二进制数时,可用简单的方法进行。
13
128
⎛
⎜
⎝
⎞
⎟
⎠
10
=
13
2
7
⎛
⎜
⎝
⎞
⎟
⎠
10
=(13× 72− )10=(1101×0.0000001)2=(0.0001101)2
8. 分别写出下列各二进制数的原码与补码,字长(含一位数符)为 8 位。
(1)0 (2)-0 (3)0.1010
(4)-0.1010 (5)1010 (6)-1010
解:题目中给出的数均是真值,其位数都不到 7 位,因此对应的原码和补码均不到 8
位(包括一位符号位)。但题目中要求的字长是 8 位,因此应将对应的原码和补码写成 8 位
的机器数,如表 3.2.1 所示。
表 3-3 真值、原码、补码的对应关系
机器数
真 值
(1)0
(2)-0
(3)0.1010
(4)-0.1010
(5)1010
(6)-1010
原 码
补 码
整数:00000000
小数:0.0000000
整数:10000000
小数:1.0000000
0.1010000
1.1010000
0 0001010
1 0001010
整数:00000000
小数:0.0000000
0.1010000
1.0110000
00001010
11110110
注:(3)、(4)题的 0.1010、-0.1010 其原码补码均只有 5 位,不够 8 位,在它们尾数
末位后补三个“0”,即成为字长 8 位的机器数。
第 6 页 共 67 页
(5)、(6)题的 1010、-1010,其原码、补码均只有 5 位,不够 8 位,在它们尾数前
面(即符号位后)补上三位二进制数码:正数补 000;负数补码补 111,负数原码补 000。
9. 若 X 补=0.1010,写出其 X 原与真值 X
解:X 原=0.1010,真值 X=0.1010
10. 若 X 补=1.1010,写出 X 原与真值 X
解:X 原=1.0110,X=-0.0110
11. 某定点小数字长 16 位,含一位符号,原码表示,分别写出下列典型值的二进制代
码与十进制真值。
(1)非零最小正数 (2)最大正数
(3)绝对值最小负数 (4)绝大值最大负数
解:四种典型值用表 3.2.2 表示。
表 3-4 定点小数原码典型值
原码
0.000000000000001
0.111111111111111
(1)非零最小正数
(2)最大正数
(3)绝对值最小负数 1.000000000000001 -0.000000000000001
(4)绝对值最大负数 1.111111111111111 -0.111111111111111
二进制真值
0.000000000000001
0.111111111111111
十进制真值
15
152−
1 2−−
152−−
(1 2
15
−
− −
)
12. 某定点小数字长 16 位,含一位符号,补码表示,分别写出下列典型值的二进制代
码与十进制真值。
(1)非零最小正数 (2)最大正数
(3)绝对值最小负数 (4)绝大值最大负数
解:四种典型值用表 3.2.3 表示。
表 3-5 定点小数补码典型值
(1)非零最小正数
(2)最大正数
(3)绝对值最小负数 1.111111111111111 -0.000000000000001
(4)绝对值最大负数 1.000000000000000 -1
二进制真值
0.000000000000001
0.111111111111111
补码
0.000000000000001
0.111111111111111
十进制真值
15
152−
1 2−−
152−−
1−
13. 某定点整数字长 16 位,含一位符号,补码表示,分别写出下列典型值的二进制代
码与十进制真值。
(1)非零最小正数 (2)最大正数
(3)绝对值最小负数 (4)绝大值最大负数
解:四种典型值用表 3.2.4 表示。
表 3-6 定点整数补码典型值
典型值
补码
二进制真值
十进制真值
(1)非零最小正数
(2)最大正数
(3)绝对值最小负数 1111111111111111 -1
(4)绝对值最大负数 1000000000000000 -1000000000000000
0000000000000001
0111111111111111
1
111111111111111
第 7 页 共 67 页
152
1
1−
1−
152−
14. 某浮点数字长 16 位,其中阶码 6 位,含一位阶符,补码表示,以 2 为底;尾数 10
位,含一位数符,补码表示,规格化。分别写出下列各典型值的二进制代码与十进制真值。
(1)非零最小正数 (2)最大正数
(3)绝对值最小负数 (4)绝大值最大负数
解:四种典型值用表 3.2.5 表示。
表 3-7 浮点数典型值
典型值
浮点数代码
(1)非零最小正数
100000,0.10…0
(2)最大正数
011111,0.11…1
(3)绝对值最小负数 10000,1.10…0
(4)绝对值最大负数 011111,1.00…0
−
真值
52
)(2 )
1
−
−
)(1 2 )
9
−−
2 )
)(2
9
1
−
−
+
52
)( 1)
− −
1
(2
52
1
−
(2
52
(2
−
(2
15. 若采用图 2-4 的浮点数格式,字长 16 位。其中阶码 6 位,含一位阶符,补码表示,
以 2 为底;尾数 10 位,含一位数符,补码表示,规格化;某浮点数代码为(A27F)16,写出
其十进制真值。
解:浮点十六进制代码:A 2 7 F
浮点二进制代码:101000,1001111111
阶码(补码)为:101000
阶码二进制真值:-11000
阶码十进制真值:-24
尾数补码: 1.001111111
尾数二进制真值:-0.110000001
尾数十进制真值: 1
2 )
(2
9
−
−
+
浮点十进制数真值: 1
2 )2
(2
9
−
−
−
+
16. 若采用图 2-5 所示的 IEEE754 短浮点数格式,请将十进制数 37.25 写成浮点数,并
+
2
2
−
2
+
= −
(2
−
25
−
26
−
33
)
+
2
+
2
24
−
−
2
−
且写出其二进制代码序列。
IEEE754 短浮点数格式为:
31 30 23 22 0
S0
……
……
数符 阶码 E 尾数 M
解:将十进制数 37.25 转换为二进制数 100101.01,按 IEEE754 标准的短实数浮点格式
要求,将 100101.01 表示为 1.0010101×25,故浮点数阶码的真值 e=5。于是,按 IEEE754 标
准,得到:
数符 S0=0,阶码(移码表示)E=(e+127)10=(5+127)10=(132)10=(10000101)2,
M=001010100000…00。
最后得到 32 位浮点数的二进制数代码序列为:
01000010100101010000000000000000
17、用变形补码计算 X 补+Y 补=?并指出是否有溢出。
(1)X 补=00.110011 Y 补=00.101101
(2)X 补=00.010110 Y 补=00.100101
(3)X 补=11.110011 Y 补=11.101101
(4)X 补=11.001101 Y 补=11.010011
第 8 页 共 67 页