计算机组成原理课后答案(唐朔飞第二版)1

更新时间:2023-11-24 12:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 计算机系统概论

1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 解:P3

计算机系统:由计算机硬件系统和软件系统组成的综合体。 计算机硬件:指计算机中的电子线路和物理装置。 计算机软件:计算机运行所需的程序及相关资料。

硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。

5. 冯?诺依曼计算机的特点是什么? 解:冯?诺依曼计算机的特点是:P8

? ? ? ? ? ?

计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成; 指令和数据以同同等地位存放于存储器内,并可以按地址访问; 指令和数据均用二进制表示;

指令由操作码、地址码两大部分组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;

指令在存储器中顺序存放,通常自动顺序取出执行; 机器以运算器为中心(原始冯?诺依曼机)。

7. 解释下列概念:

主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。 解:P9-10

主机:是计算机硬件的主体部分,由CPU和主存储器MM合成为主机。

CPU:中央处理器,是计算机硬件的核心部件,由运算器和控制器组成;(早期的运算器和控制器不在同一芯片上,现在的CPU内除含有运算器和控制器外还集成了CACHE)。

主存:计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成。

存储单元:可存放一个机器字并具有特定存储地址的存储单位。

存储元件:存储一位二进制信息的物理元件,是存储器中最小的存储单位,又叫存储基元或存储元,不能单独存取。

存储字:一个存储单元所存二进制代码的逻辑单位。 存储字长:一个存储单元所存二进制代码的位数。

存储容量:存储器中可存二进制代码的总量;(通常主、辅存容量分开描述)。 机器字长:指CPU一次能处理的二进制数据的位数,通常与CPU的寄存器位数有关。 指令字长:一条指令的二进制代码位数。

8. 解释下列英文缩写的中文含义:

CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS 解:全面的回答应分英文全称、中文名、功能三部分。

CPU:Central Processing Unit,中央处理机(器),是计算机硬件的核心部件,主要由运算器和控制器组成。

PC:Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数

形成下一条指令地址。

IR:Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。 CU:Control Unit,控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。

ALU:Arithmetic Logic Unit,算术逻辑运算单元,为运算器的核心部件,其功能是进行算术、逻辑运算。

ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。

MQ:Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。

X:此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;

MAR:Memory Address Register,存储器地址寄存器,在主存中用来存放欲访问的存储单元的地址。

MDR:Memory Data Register,存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。

I/O:Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送。

MIPS:Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。

9. 画出主机框图,分别以存数指令“STA M”和加法指令“ADD M”(M均为主存地址)为例,在图中按序标出完成该指令(包括取指令阶段)的信息流程(如→①)。假设主存容量为256M*32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。 解:主机框图如P13图1.11所示。

(1)STA M指令:PC→MAR,MAR→MM,MM→MDR,MDR→IR,

OP(IR) →CU,Ad(IR) →MAR,ACC→MDR,MAR→MM,WR

(2)ADD M指令:PC→MAR,MAR→MM,MM→MDR,MDR→IR,

OP(IR) →CU,Ad(IR) →MAR,RD,MM→MDR,MDR→X,ADD,ALU→ACC,ACC→MDR,WR

假设主存容量256M*32位,在指令字长、存储字长、机器字长相等的条件下,ACC、X、IR、MDR寄存器均为32位,PC和MAR寄存器均为28位。

10. 指令和数据都存于存储器中,计算机如何区分它们? 解:计算机区分指令和数据有以下2种方法:

? 通过不同的时间段来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据。

? 通过地址来源区分,由PC提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。

第2章 计算机的发展及应用

1. 通常计算机的更新换代以什么为依据? 答:P22

主要以组成计算机基本电路的元器件为依据,如电子管、晶体管、集成电路等。

2. 举例说明专用计算机和通用计算机的区别。

答:按照计算机的效率、速度、价格和运行的经济性和实用性可以将计算机划分为通用计算机和专用计算机。通用计算机适应性强,但牺牲了效率、速度和经济性,而专用计算机是最有效、最经济和最快的计算机,但适应性很差。例如个人电脑和计算器。

第3章 系统总线

1. 什么是总线?总线传输有何特点?为了减轻总线负载,总线上的部件应具备什么特点? 答:P41.总线是多个部件共享的传输部件。

总线传输的特点是:某一时刻只能有一路信息在总线上传输,即分时使用。 为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。

4. 为什么要设置总线判优控制?常见的集中式总线控制有几种?各有何特点?哪种方式响应时间最快?哪种方式对电路故障最敏感?

答:总线判优控制解决多个部件同时申请总线时的使用权分配问题;

常见的集中式总线控制有三种:链式查询、计数器定时查询、独立请求;

特点:链式查询方式连线简单,易于扩充,对电路故障最敏感;计数器定时查询方式优先级设置较灵活,对故障不敏感,连线及控制过程较复杂;独立请求方式速度最快,但硬件器件用量大,连线多,成本较高。

5. 解释下列概念:总线宽度、总线带宽、总线复用、总线的主设备(或主模块)、总线的从设备(或从模块)、总线的传输周期和总线的通信控制。 答:P46。

总线宽度:通常指数据总线的根数;

总线带宽:总线的数据传输率,指单位时间内总线上传输数据的位数; 总线复用:指同一条信号线可以分时传输不同的信号。

总线的主设备(主模块):指一次总线传输期间,拥有总线控制权的设备(模块); 总线的从设备(从模块):指一次总线传输期间,配合主设备完成数据传输的设备(模块),它只能被动接受主设备发来的命令;

总线的传输周期:指总线完成一次完整而可靠的传输所需时间; 总线的通信控制:指总线传送过程中双方的时间配合方式。

6. 试比较同步通信和异步通信。

答:同步通信:指由统一时钟控制的通信,控制方式简单,灵活性差,当系统中各部件工作速度差异较大时,总线工作效率明显下降。适合于速度差别不大的场合。

异步通信:指没有统一时钟控制的通信,部件间采用应答方式进行联系,控制方式较同步复杂,灵活性高,当系统中各部件工作速度差异较大时,有利于提高总线工作效率。

8. 为什么说半同步通信同时保留了同步通信和异步通信的特点?

答:半同步通信既能像同步通信那样由统一时钟控制,又能像异步通信那样允许传输时间不一致,因此工作效率介于两者之间。

10. 为什么要设置总线标准?你知道目前流行的总线标准有哪些?什么叫plug and play?哪些总线有这一特点?

答:总线标准的设置主要解决不同厂家各类模块化产品的兼容问题;

目前流行的总线标准有:ISA、EISA、PCI等; plug and play:即插即用,EISA、PCI等具有此功能。

11. 画一个具有双向传输功能的总线逻辑图。

答:在总线的两端分别配置三态门,就可以使总线具有双向传输功能。

a0a1anb0b1bna至b

b至a

12. 设数据总线上接有A、B、C、D四个寄存器,要求选用合适的74系列芯片,完成下列逻辑设计:

(1) 设计一个电路,在同一时间实现D→A、D→B和D→C寄存器间的传送; (2) 设计一个电路,实现下列操作:

T0时刻完成D→总线; T1时刻完成总线→A; T2时刻完成A→总线; T3时刻完成总线→B。

解:(1)由T打开三态门将 D寄存器中的内容送至总线bus,由cp脉冲同时将总线上的数据打入到 A、B、C寄存器中。 T和cp的时间关系如图(1)所示。

cp脉冲ABC总线busT三态门Tcp

图(1)

D(2)三态门1受T0+T1控制,以确保T0时刻D→总线,以及T1时刻总线→接收门1→A。三态门2受T2+T3控制,以确保T2时刻A→总线,以及T3时刻总线→接收门2→B。T0、T1、T2、T3波形图如图(2)所示。

图(2)

3.14 设总线的时钟频率为8MHz,一个总线周期等于一个时钟周期。如果一个总线周期中并行传送16位数据,试问总线的带宽是多少?

解;总线宽度 = 16位/8 =2B 总线带宽 = 8MHz×2B =16MB/s

3.15 在一个32位的总线系统中,总线的时钟频率为66MHz,假设总线最短传输周期为4个时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施?

解法1: 总线宽度 =32位/8 =4B 时钟周期 =1/ 66MHz =0.015μs 总线最短传输周期 =0.015μs×4 =0.06μs 总线最大数据传输率 = 4B/0.06μs =66.67MB/s

解法2: 总线工作频率 = 66MHz/4 =16.5MHz 总线最大数据传输率=16.5MHz×4B =66MB/s

若想提高总线的数据传输率,可提高总线的时钟频率,或减少总线周期中的时钟个数,或增加总线宽度。

3.16 在异步串行传送系统中,字符格式为:1个起始位、8个数据位、1个校验位、2个终止位。若要求每秒传送120个字符,试求传送的波特率和比特率。

解: 一帧 =1+8+1+2 =12位 波特率 =120帧/秒×12位=1440波特

比特率 = 1440波特×(8/12)=960bps或:比特率 = 120帧/秒×8 =960bps

第 四 章

0.静态RAM与动态RAM的区别

静态RAM(SRAM)速度非常快,只要电源存在内容就不会自动消失。其基本存储电路为6个MOS管组成1位,因此集成度相对较低,功耗也较大。一般高速缓冲存储器用它组成。

动态RAM(DRAM)的内容在10-3或l0-6秒之后自动消失,因此必须周期性的在内容消失之前进行刷新。由于它的基本存储电路由一个晶体管及一个电容组成,因此它的集成度高,成本较低,另外耗电也少,但它需要一个额外的刷新电路。DRAM运行速度较慢,SRAM比DRAM要快2~5倍,一般,PC机的标准存储器都采用DRAM组成。 1.辅助储存的技术的指标

(1)记录密度 Dt=1/p Db=f1/πd(min) (2)储存容量 C=NKS

(3)平均寻址时间 Ta=Tsa+Twd (4)数据传输率 Dv=Db*V (5)误码率

2.Cache的三种映射方式:

(1)直接映射 实现简单,不够灵活。 (2)全相联映射 (3)组相联映射

3. 存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次? 答:存储器的层次结构主要体现在Cache-主存和主存-辅存这两个存储层次上。

Cache-主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。

主存-辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。

综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。

主存与CACHE之间的信息调度功能全部由硬件自动完成。而主存与辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部分通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。

4. 说明存取周期和存取时间的区别。

解:存取周期和存取时间的主要区别是:存取时间仅为完成一次操作的时间,而存取周期不仅包含操作时间,还包含操作后线路的恢复时间。即:

存取周期 = 存取时间 + 恢复时间

5. 什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?

解:存储器的带宽指单位时间内从存储器进出信息的最大数量。

存储器带宽 = 1/200ns ×32位 = 160M位/秒 = 20MB/秒 = 5M字/秒 注意:字长32位,不是16位。(注:1ns=10s)

6. 某机字长为32位,其存储容量是64KB,按字编址它的寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。

解:存储容量是64KB时,按字节编址的寻址范围就是64K,如按字编址,其寻址范围为:

64K / (32/8)= 16K

主存字地址和字节地址的分配情况:(略)。

7. 一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?

1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位 解:地址线和数据线的总和 = 14 + 32 = 46根;

选择不同的芯片时,各需要的片数为:

1K×4:(16K×32) / (1K×4) = 16×8 = 128片 2K×8:(16K×32) / (2K×8) = 8×4 = 32片 4K×4:(16K×32) / (4K×4) = 4×8 = 32片 16K×1:(16K×32)/ (16K×1) = 1×32 = 32片 4K×8:(16K×32)/ (4K×8) = 4×4 = 16片 8K×8:(16K×32) / (8K×8) = 2×4 = 8片

-9

9. 什么叫刷新?为什么要刷新?说明刷新有几种方法。

解:刷新:对DRAM定期进行的全部重写过程;

刷新原因:因电容泄漏而引起的DRAM所存信息的衰减需要及时补充,因此安排了定期刷新操作;

常用的刷新方法有三种:集中式、分散式、异步式。

集中式:在最大刷新间隔时间内,集中安排一段时间进行刷新,存在CPU访存死时间。 分散式:在每个读/写周期之后插入一个刷新周期,无CPU访存死时间。 异步式:是集中式和分散式的折衷。 讨论:

1、刷新与再生的比较: 共同点:

?动作机制一样。都是利用DRAM存储元破坏性读操作时的重写过程实现; ?操作性质一样。都是属于重写操作。 区别:

?解决的问题不一样。再生主要解决DRAM存储元破坏性读出时的信息重写问题;刷新主要解决长时间不访存时的信息衰减问题。

?操作的时间不一样。再生紧跟在读操作之后,时间上是随机进行的;刷新以最大间隔时间为周期定时重复进行。

?动作单位不一样。再生以存储单元为单位,每次仅重写刚被读出的一个字的所有位;刷新以行为单位,每次重写整个存储器所有芯片内部存储矩阵的同一行。

?芯片内部I/O操作不一样。读出再生时芯片数据引脚上有读出数据输出;刷新时由于CAS信号无效,芯片数据引脚上无读出数据输出(唯RAS有效刷新,内部读)。鉴于上述区别,为避免两种操作混淆,分别叫做再生和刷新。 2、CPU访存周期与存取周期的区别:

CPU访存周期是从CPU一边看到的存储器工作周期,他不一定是真正的存储器工作周期;存取周期是存储器速度指标之一,它反映了存储器真正的工作周期时间。

3、分散刷新是在读写周期之后插入一个刷新周期,而不是在读写周期内插入一个刷新周期,但此时读写周期和刷新周期合起来构成CPU访存周期。

4、刷新定时方式有3种而不是2种,一定不要忘了最重要、性能最好的异步刷新方式。

10. 半导体存储器芯片的译码驱动方式有几种?

解:半导体存储器芯片的译码驱动方式有两种:线选法和重合法。

线选法:地址译码信号只选中同一个字的所有位,结构简单,费器材;

重合法:地址分行、列两部分译码,行、列译码线的交叉点即为所选单元。这种方法通过行、列译码信号的重合来选址,也称矩阵译码。可大大节省器材用量,是最常用的译码驱动方式。

11. 一个8K×8位的动态RAM芯片,其内部结构排列成256×256形式,存取周期为0.1μs。试问采用集中刷新、分散刷新和异步刷新三种方式的刷新间隔各为多少?

解:采用分散刷新方式刷新间隔为:2ms,其中刷新死时间为:256×0.1μs=25.6μs

采用分散刷新方式刷新间隔为:256×(0.1μs+×0.1μs)=51.2μs 采用异步刷新方式刷新间隔为:2ms

12. 画出用1024×4位的存储芯片组成一个容量为64K×8位的存储器逻辑框图。要求将64K分成4个页面,每个页面分16组,指出共需多少片存储芯片。 解:设采用SRAM芯片,则:

总片数 = (64K×8位) / (1024×4位)= 64×2 = 128片

题意分析:本题设计的存储器结构上分为总体、页面、组三级,因此画图时也应分三级画。首先应确定各级的容量:

页面容量 = 总容量 / 页面数 = 64K×8 / 4 = 16K×8位,4片16K×8字串联成64K×8位

组容量 = 页面容量 / 组数 = 16K×8位 / 16 = 1K×8位,16片1K×8位字串联成16K×8位

组内片数 = 组容量 / 片容量 = 1K×8位 / 1K×4位 = 2片,两片1K×4位芯片位并联成1K×8位

存储器逻辑框图:(略)。

13. 设有一个64K×8位的RAM芯片,试问该芯片共有多少个基本单元电路(简称存储基元)?欲设计一种具有上述同样多存储基元的芯片,要求对芯片字长的选择应满足地址线和数据线的总和为最小,试确定这种芯片的地址线和数据线,并说明有几种解答。 解:存储基元总数 = 64K×8位 = 512K位 = 2位;

19

思路:如要满足地址线和数据线总和最小,应尽量把存储元安排在字向,因为地址位数和字数成2的幂的关系,可较好地压缩线数。

解:设地址线根数为a,数据线根数为b,则片容量为:2×b = 2;b = 2

若a = 19,b = 1,总和 = 19+1 = 20; a = 18,b = 2,总和 = 18+2 = 20; a = 17,b = 4,总和 = 17+4 = 21; a = 16,b = 8,总和 = 16+8 = 24; ?? ??

由上可看出:片字数越少,片字长越长,引脚数越多。片字数减1、片位数均按2的幂变化。

结论:如果满足地址线和数据线的总和为最小,这种芯片的引脚分配方案有两种:地址线 = 19根,数据线 = 1根;或地址线 = 18根,数据线 = 2根。

14. 某8位微型机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:

(1)该机所允许的最大主存空间是多少?

(2)若每个模块板为32K×8位,共需几个模块板? (3)每个模块板内共有几片RAM芯片? (4)共有多少片RAM? (5)CPU如何选择各模块板?

解:(1)该机所允许的最大主存空间是:2 × 8位 = 256K×8位 = 256KB

(2)模块板总数 = 256K×8 / 32K×8 = 8块

(3)板内片数 = 32K×8位 / 4K×4位 = 8×2 = 16片 (4)总片数 = 16片×8 = 128片

(5)CPU通过最高3位地址译码输出选择模板,次高3位地址译码输出选择芯片。地址格式分配如下:

模板号(3位) 芯片号 (3位) 片内地址(12位)18

a

19

19-a

MREQMREQ4.15 设CPU共有16根地址线,8根数据线,并用A15A14A13A12A11A074138...ROM1OE...ROM2OE...RAM1...CSCPUD0D3D4D7R/WPDPROGRAM2作读写命令信号(高电平为读,低电平为写)。现有下列存储芯片:ROM(2K×8位,4K×4位,8K×8位),RAM(1K×4位,2K×8位,4K×8位),及74138译码器和其他门电路(门电路自定)。试从上述规格中选用合适芯片,画出CPU和存储芯片的连接图。要求:

(1)最小4K地址为系统程序区,4096~16383地址范围为用户程序区; (2)指出选用的存储芯片类型及数量; (3)详细画出片选逻辑。 解:(1)地址空间分配图:

系统程序区(ROM共4KB):0000H-0FFFH 用户程序区(RAM共12KB):1000H-FFFFH

(2)选片:ROM:选择4K×4位芯片2片,位并联 RAM:选择4K×8位芯片3片,字串联(RAM1地址范围为:1000H-1FFFH,RAM2地址范围为2000H-2FFFH, RAM3地址范围为:3000H-3FFFH) (3)各芯片二进制地址分配如下: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ROM1,2 0 ............CSRAM3(低电平有效)作访存控制信号,......CPUCSA15A14A13A12A11A074138...OE...ROM2OE...RAM1...CS...CSPDPROGROM1RAM2RAM3D0D3D4D7R/W...............CS0 RAM1 RAM2 RAM3 0 0 0 0 0 0

MREQ0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 CPU和存储器连接逻辑图及片选逻辑如下图(3)所示:

G1G2AY7Y3Y2A15A14A13A12A11A0G2BABC74138Y1Y0......ROM1OE...ROM2OE...RAM1...CS...CSCPUD0D3D4D7R/WPD/PROGRAM2RAM3...............CS......图(3)

16. CPU假设同上题,现有8片8K×8位的RAM芯片与CPU相连,试回答:

(1)用74138译码器画出CPU与存储芯片的连接图; (2)写出每片RAM的地址范围;

(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片都有与其相同的数据,分析故障原因。

(4)根据(1)的连接图,若出现地址线A13与CPU断线,并搭接到高电平上,将出现什么后果?

解:(1)CPU与存储器芯片连接逻辑图:

+5VG1G2AMREQY7A15A14A13A12A0G2BABC74138......Y2Y1Y0...WE...WE.........CSWECPUD0D7RAM0......CSRAM1RAM7......CSR/W

(2)地址空间分配图: RAM0:0000H-1FFFH RAM1:2000H-3FFFH RAM2:4000H-5FFFH RAM3:6000H-7FFFH RAM4:8000H-9FFFH RAM5:A000H-BFFFH RAM6:C000H-DFFFH RAM7:E000H-FFFFH

(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(RAM5)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。假设芯片与译码器本身都是好的,可能的情况有:

1)该片的-CS端与-WE端错连或短路;

2)该片的-CS端与CPU的-MREQ端错连或短路; 3)该片的-CS端与地线错连或短路。

(4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。

17. 写出1100、1101、1110、1111对应的汉明码。 解:有效信息均为n=4位,假设有效信息用b4b3b2b1表示

校验位位数k=3位,(2>=n+k+1)

设校验位分别为c1、c2、c3,则汉明码共4+3=7位,即:c1c2b4c3b3b2b1 校验位在汉明码中分别处于第1、2、4位 c1=b4⊕b3⊕b1 c2=b4⊕b2⊕b1

k

c3=b3⊕b2⊕b1

当有效信息为1100时,c3c2c1=011,汉明码为1110100。 当有效信息为1101时,c3c2c1=100,汉明码为0011101。 当有效信息为1110时,c3c2c1=101,汉明码为1011110。 当有效信息为1111时,c3c2c1=010,汉明码为0110111。

18. 已知收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错?第几位出错?

解:假设接收到的汉明码为:c1’c2’b4’c3’b3’b2’b1’

纠错过程如下:

P1=c1’⊕b4’⊕b3’⊕b1’ P2=c2’⊕b4’⊕b2’⊕b1’ P3=c3’⊕b3’⊕b2’⊕b1’

如果收到的汉明码为1100100,则p3p2p1=011,说明代码有错,第3位(b4’)出错,有效信息为:1100

如果收到的汉明码为1100111,则p3p2p1=111,说明代码有错,第7位(b1’)出错,有效信息为:0110

如果收到的汉明码为1100000,则p3p2p1=110,说明代码有错,第6位(b2’)出错,有效信息为:0010

如果收到的汉明码为1100001,则p3p2p1=001,说明代码有错,第1位(c1’)出错,有效信息为:0001

22. 某机字长16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。

解:若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体交叉存取技术,8体交叉访问时序如下图:

启动存储体0启动存储体1启动存储体2启动存储体3启动存储体4启动存储体5启动存储体6启动存储体7单体访存周期

18. 什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理? 解:程序运行的局部性原理指:在一小段时间内,最近被访问过的程序和数据很可能再次被访问;在空间上,这些被访问的程序和数据往往集中在一小片存储区;在访问顺序上,指令顺序执行比转移执行的可能性大 (大约 5:1 )。存储系统中Cache—主存层次采用了程序访问的局部性原理。

25. Cache做在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处? 答:Cache做在CPU芯片内主要有下面几个好处:

1)可提高外部总线的利用率。因为Cache在CPU芯片内,CPU访问Cache时不必占用外部总线。

2)Cache不占用外部总线就意味着外部总线可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率。

3)可提高存取速度。因为Cache与CPU之间的数据通路大大缩短,故存取速度得以提高。 将指令Cache和数据Cache分开有如下好处:

1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成。 2)指令Cache可用ROM实现,以提高指令存取的可靠性。

3)数据Cache对不同数据类型的支持更为灵活,既可支持整数(例32位),也可支持浮点数据(如64位)。 补充:

Cache结构改进的第三个措施是分级实现,如二级缓存结构,即在片内Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。

30. 一个组相连映射的CACHE由64块组成,每组内包含4块。主存包含4096块,每块由128

字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。 解:cache组数:64/4=16 ,Cache容量为:64*128=2字,cache地址13位

主存共分4096/16=256区,每区16块

主存容量为:4096*128=2字,主存地址19位,地址格式如下: 主存字块标记(8位) 组地址(4位) 字块内地址(7位) 32. 设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映象(即Cache每组内共有4个字块)的Cache组织,要求: (1)画出主存地址字段中各段的位数;

(2)设Cache的初态为空,CPU依次从主存第0、1、2……99号单元读出100个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?

(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度提高多少倍? 答:

(1)由于容量是按字节表示的,则主存地址字段格式划分如下: 8 7 2 3 2

(2)由于题意中给出的字地址是连续的,故(1)中地址格式的最低2位不参加字的读出操作。当主存读0号字单元时,将主存0号字块(0~7)调入Cache(0组x号块),主存读8号字单元时,将1号块(8~15)调入Cache(1组x号块)…… 主存读96号单元时,将12号块(96~103)调入Cache(12组x号块)。

? 共需调100/8 13次,就把主存中的100个数调入Cache。除读第1遍时CPU需访问主存13次外,以后重复读时不需再访问主存。则在800个读操作中:

19

13

访Cache次数=(100-13)+700=787次 ? 0.98 ? Cache命中率=787/800 98%

(3)设无Cache时访主存需时800T(T为主存周期),加入Cache后需时: (131.167+13)T?T/6+13T?787 144.167T? 5.55倍?则:800T/144.167T

有Cache和无Cache相比,速度提高4.55倍左右。

38. 磁盘组有六片磁盘,每片有两个记录面,存储区域内径22厘米,外径33厘米,道密度

为 40道/厘米,内层密度为400位/厘米,转速2400转/分,问: (1)共有多少存储面可用? (2)共有多少柱面?

(3)盘组总存储容量是多少? (4)数据传输率是多少? 解:

(1)若去掉两个保护面,则共有: 6 × 2 - 2 = 10个存储面可用; (2)有效存储区域

=(33-22)/ 2 = 5.5cm

柱面数 = 40道/cm × 5.5= 220道 =? (3)内层道周长=22 69.08cm 道容量=400位/cm×69.08cm = 3454B

面容量=3454B × 220道 = 759,880B

盘组总容量 = 759,880B × 10面 = 7,598,800B (4)转速 = 2400转 / 60秒 = 40转/秒

数据传输率 = 3454B × 40转/秒 = 138,160 B/S 注意:

1)计算盘组容量时一般应去掉上、下保护面;

的精度选取不同将引起答案不同,一般取两位小数;?2) 盘组总磁道数(=一个盘面上的磁道数)?3)柱面数 4)数据传输率与盘面数无关;

5)数据传输率的单位时间是秒,不是分。

4.39 某磁盘存储器转速为3000转/分,共有4个记录盘面,每毫米5道,每道记录信息12 288字节,最小磁道直径为230mm,共有275道,求: (1)磁盘存储器的存储容量;

(2)最高位密度(最小磁道的位密度)和最低位密度; (3)磁盘数据传输率; (4)平均等待时间。

解: (1)存储容量 = 275道×12 288B/道×4面 = 13 516 800B

(2)最高位密度 = 12 288B/230?≈17B/mm≈136位/mm(向下取整) 最大磁道直径=230mm+275道/5道 × 2= 230mm + 110mm = 340mm 最低位密度 = 12 288B / 340?≈11B/mm≈92位 / mm (向下取整)

(3)磁盘数据传输率= 12 288B × 3000转/分=12 288B × 50转/秒=614 400B/S (4)平均等待时间 = 1/50 / 2 = 10ms

讨论:1、本题给出的道容量单位为字节,因此算出的存储容量单位也是字节,而不是位; 2、由此算出的位密度单位最终应转换成bpm(位/毫米); 3、平均等待时间是磁盘转半圈的时间,与容量无关。

4.41 设有效信息为110,试用生成多项式G(x) =11011将其编成循环冗余校验码。 解:编码过程如下: M(x) =110 n =3

G(x) =11011 k+1 =5 k =4 M(x)·x4 =110 0000

M(x)·x4/G(x) =110 0000/11011=100+1100/11011 R(x) =1100 M(x)·x4+R(x) =110 0000+1100=110 1100 =CRC码 (7,3)码

注:此题的G(x)选得不太好,当最高位和最低位出错时,余数相同,均为0001。此时只能检错,无法纠错

第 五 章

1. I/O有哪些编址方式?各有何特点?

解:常用的I/O编址方式有两种: I/O与内存统一编址和I/O独立编址;

特点: I/O与内存统一编址方式的I/O地址采用与主存单元地址完全一样的格式,I/O设备和主存占用同一个地址空间,CPU可像访问主存一样访问I/O设备,不需要安排专门的I/O指令。

I/O独立编址方式时机器为I/O设备专门安排一套完全不同于主存地址格式的地址编码,此时I/O地址与主存地址是两个独立的空间,CPU需要通过专门的I/O指令来访问I/O地址空间。 讨论:I/O编址方式的意义:

I/O编址方式的选择主要影响到指令系统设计时I/O指令的安排,因此描述其特点时一定要说明此种I/O编址方式对应的I/O指令设置情况。

? I/O与内存统一编址方式将I/O地址看成是存储地址的一部分,占用主存空间;

问题:确切地讲, I/O与内存统一编址的空间为总线空间,I/O所占用的是内存的扩展空间。 I/O独立编址方式有明显的I/O地址标识,? 而I/O与内存统一的编址方式没有; 问题:无论哪种编址方式,I/O地址都是由相应的指令提供的,而地址本身并没有特殊的标识。

2. 简要说明CPU与I/O之间传递信息可采用哪几种联络方式?它们分别用于什么场合? 答: CPU与I/O之间传递信息常采用三种联络方式:直接控制(立即响应)、 同步、异步。 适用场合分别为:

注意:程序中断方式虽然CPU运行效率比程序查询高,但传输速度却比程序查询慢。 (6)程序查询接口硬件结构最简单,因此最经济; 程序中断接口硬件结构稍微复杂一些,因此较经济; DMA控制器硬件结构最复杂,因此成本最高; (7)程序中断方式适用于中、低速设备的I/O交换; 程序查询方式适用于中、低速实时处理过程; DMA方式适用于高速设备的I/O交换; 讨论:

问题1:这里的传送速度指I/O设备与主存间,还是I/O与CPU之间?

答:视具体传送方式而定,程序查询、程序中断为I/O与CPU之间交换,DMA为I/O与主存间交换。

问题2:主动性应以CPU的操作方式看,而不是以I/O的操作方式看。 程序查询方式:以缓冲器容量(块、二进制数字)为单位传送;? ? 程序中断方式:以向量地址中的数据(二进制编码)为单位传送; DMA:传送单位根据数据线的根数而定;?

30. 什么是多重中断?实现多重中断的必要条件是什么?

解:多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行的过程。

实现多重中断的必要条件是:在现行中断服务期间,中断允许触发器为1,即开中断。

第 六 章

2. 已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。 (1)X > 1/8; ?1/2; (2)X X?

(3)1/4 > 1/16

解: (1)若要X > 1/2,只要a1=1,a2~a6不全为0即可(a2 or a3 or a4 1/8,只要a1~a3不全为0即可(a1 or a2 or a3 =1),?or a5 or a6 = 1); (2)若要X a4~a6可任取0或1;

X?(3)若要1/4 > 1/16,只要a1=0,a2可任取0或1; 当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5 or a6=1;若a3=1,则a4~a6可任取0或1; 当a2=1时, a3~a6可任取0或1。

3. 设x为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。)

6.4 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下: 真 值

十进制 二进制 原 码 反 码 补 码 -13/64 -0.00 1101 1.001 1010 1.110 0101 1.110 0110

29/128 0.001 1101 0.001 1101 0.001 1101 0.001 1101 100 110 0100 0,110 0100 0,110 0100 0,110 0100 -87 -101 0111 1,101 0111 1,010 1000 1,010 1001

5. 已知[x]补,求[x]原和x。 [x1]补=1. 1100; [x2]补=1. 1001; [x3]补=0. 1110; [x4]补=1. 0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x的对应关系如下:

6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,

[x]补=[x]原成立。

解: 当x为小数时,若x [x]补=[x]原成立; 若x < 0,则当x= -1/2时, [x]补=[x]原成立。 0,则 [x]补=[x]原成立; 若x?当x为整数时,若x < 0,则当x= -64时, [x]补=[x]原成立。

7. 设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。

解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。 [-x*]补=[-x]补的结论只在x>0时成立。当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补不等于[-x]补。

8. 讨论若[x]补>[y]补,是否有x>y?

解:若[x]补>[y]补,不一定有x>y。 [x]补 > [y]补时 x > y的结论只在 x > 0、y > 0,及 x<0、y<0时成立。当x>0、 y<0时,有x>y,但由于负数补码的符号位为1,则[x]补<[y]补。同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。

注意: 1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此, 当x<0、y<0时,若[x]补>[y]补,必有x>y。 2)补码的符号位和数值位为一体,不可分开分析。 3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。 4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。 5)不考虑不同数字系统间的比较。(如有人分析x、y字长不等时的情况,无意义。)

12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、-27/1024所对应的机器数。要求如下: (1)阶码和尾数均为原码。 (2)阶码和尾数均为补码。

(3)阶码为移码,尾数为补码。 解:据题意画出该浮点数的格式:

阶符1位 阶码4位 数符1位 尾数10位 -1-5

将十进制数转换为二进制:x1= 51/128= 0.0110011B= 2 * 0.110 011B

x2= -27/1024= -0.0000011011B = 2*(-0.11011B)

则以上各数的浮点规格化数为:

(1)[x1]浮=1,0001;0.110 011 000 0 [x2]浮=1,0101;1.110 110 000 0 (2)[x1]浮=1,1111;0.110 011 000 0 [x2]浮=1,1011;1.001 010 000 0 (3)[x1]浮=0,1111;0.110 011 000 0

[x2]浮=0,1011;1.001 010 000 0

13. 浮点数格式同上题,当阶码基值分别取2和16时, (1)说明2和16在浮点数中如何表示。 (2)基值不同对浮点数什么有影响? (3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。 解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。

(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但精度越下降。 (3)r=2时,最大正数的浮点格式为: 0,1111;0.111 111 111 1 其真值为:N+max=215×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.100 000 000 0 其真值为:N+min=2-16×2-1=2-17 r=16时,最大正数的浮点格式为: 0,1111;0.1111 1111 11 其真值为:N+max=1615×(1-2-10) 非零最小规格化正数浮点格式为: 1,0000;0.0001 0000 00 其真值为:N+min=16-16×16-1=16-17

14. 设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么? 解:若要保证数的最大精度,应取阶的基=2。 若要表示±6万间的十进制数,由于32768(215)< 6万 <65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。 故:尾数位数=32-1-1-5=25码 25

15. 什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式? 解:机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。

16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位符号位,答案均用十进制表示。 (1)无符号数;

(2)原码表示的定点小数。 (3)补码表示的定点小数。 (4)补码表示的定点整数。 (5)原码表示的定点整数。

(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出其正数和负数的表示范围。

(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。

解:(1)无符号整数:0 —— 2 - 1,即:0—— 65535;

无符号小数:0 —— 1 - 2 ,即:0 —— 0.99998;

(2)原码定点小数:-1 + 2——1 - 2 ,即:-0.99997 —— 0.99997

-15

-15

-16

16

位 25(32) 该浮点数格式如

下: 1 5 1 ??按此格式,该浮点数上溢的条件为:阶

(3)补码定点小数:- 1——1 - 2 ,即:-1——0.99997 (4)补码定点整数:-2——2 - 1 ,即:-32768——32767 (5)原码定点整数:-2 + 1——2 - 1,即:-32767——32767

(6)据题意画出该浮点数格式,当阶码和尾数均采用原码,非规格化数表示时: 最大负数= 1,11 111;1.000 000 001 ,即 -2?2 最小负数= 0,11 111;1.111 111 111,即 -(1-2)?2 则负数表示范围为:-(1-2)?2—— -2?2 最大正数= 0,11 111;0.111 111 111,即 (1-2)?2 最小正数= 1,11 111;0.000 000 001,即 2?2 则正数表示范围为:2?2

-9

-31

-9

-31-9

31

-9

31

-9

-31

-9

31

-9

-31

15

15

15

15

-15

——(1-2)?2

-1

-32

-931

(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则 最大负数=1,00 000;1.011 111 111,即 -2?2 最小负数=0,11 111;1.000 000 000,即 -1?2 则负数表示范围为:-1?2—— -2?2

最大正数=0,11 111;0.111 111 111,即 (1-2)?2 最小正数=1,00 000;0.100 000 000,即 2?2 则正数表示范围为:2?2

-1

-32

-1

-32-9

31

31

-1

-32

31

——(1-2)?2

-931

17. 设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术

右移一位、两位,讨论结果是否正确。

[x1]原=0.001 1010;[y1]补=0.101 0100;[z1]反=1.010 1111; [x2]原=1.110 1000;[y2]补=1.110 1000;[z2]反=1.110 1000; [x3]原=1.001 1001;[y3]补=1.001 1001;[z3]反=1.001 1001。 解:算术左移一位:

[x1]原=0.011 0100;正确

[x2]原=1.101 0000;溢出(丢1)出错 [x3]原=1.011 0010;正确

[y1]补=0.010 1000;溢出(丢1)出错 [y2]补=1.101 0000;正确

[y3]补=1.011 0010;溢出(丢0)出错 [z1]反=1.101 1111;溢出(丢0)出错 [z2]反=1.101 0001;正确

[z3]反=1.011 0011;溢出(丢0)出错 算术左移两位:

[x1]原=0.110 1000;正确

[x2]原=1.010 0000;溢出(丢11)出错 [x3]原=1.110 0100;正确

[y1]补=0.101 0000;溢出(丢10)出错 [y2]补=1.010 0000;正确

[y3]补=1.110 0100;溢出(丢00)出错 [z1]反=1.011 1111;溢出(丢01)出错 [z2]反=1.010 0011;正确

[z3]反=1.110 0111;溢出(丢00)出错 算术右移一位:

[x1]原=0.000 1101;正确 [x2]原=1.011 0100;正确

[x3]原=1.000 1100(1);丢1,产生误差 [y1]补=0.010 1010;正确 [y2]补=1.111 0100;正确

[y3]补=1.100 1100(1);丢1,产生误差 [z1]反=1.101 0111;正确

[z2]反=1.111 0100(0);丢0,产生误差 [z3]反=1.100 1100;正确 算术右移两位:

[x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确

[x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确

[y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确

[z2]反=1.111 1010(00);产生误差

[z3]反=1.110 0110(01);产生误差 18. 试比较逻辑移位和算术移位。

解:逻辑移位和算术移位的区别: 逻辑移位是对逻辑数或无符号数进行的移位,其特点是不论左移还是右移,空出位均补0,移位时不考虑符号位。 算术移位是对带符号数进行的移位操作,其关键规则是移位时符号位保持不变,空出位的补入值与数的正负、移位方向、采用的码制等有关。补码或反码右移时具有符号延伸特性。左移时可能产生溢出错误,右移时可能丢失精度。

19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。

(1)A=9/64, B=-13/32,求A+B。 (2)A=19/32,B=-17/128,求A-B。 (3)A=-3/16,B=9/32,求A+B。 (4)A=-87,B=53,求A-B。 (5)A=115,B=-24,求A+B。

解:(1)A=9/64= 0.001 0010B, B= -13/32= -0.011 0100B [A]补=0.001 0010, [B]补=1.100 1100

[A+B]补= 0.0010010 + 1.1001100 = 1.1011110 ——无溢出 A+B= -0.010 0010B = -17/64

(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B

[A]补=0.100 1100, [B]补=1.110 1111 , [-B]补=0.001 0001

[A-B]补= 0.1001100 + 0.0010001= 0.1011101 ——无溢出 A-B= 0.101 1101B = 93/128B

(3)A= -3/16= -0.001 1000B, B=9/32= 0.010 0100B [A]补=1.110 1000, [B]补= 0.010 0100

[A+B]补= 1.1101000 + 0.0100100 = 0.0001100 —— 无溢出 A+B= 0.000 1100B = 3/32

(4) A= -87= -101 0111B, B=53=110 101B

[A]补=1 010 1001, [B]补=0 011 0101, [-B]补=1 100 1011

[A-B]补= 1 0101001 + 1 1001011 = 0 1110100 —— 溢出 (5)A=115= 111 0011B, B= -24= -11 000B [A]补=0 1110011, [B]补=1,110 1000

[A+B]补= 0 1110011 + 1 1101000 = 0 1011011——无溢出 A+B= 101 1011B = 91

6.20 用原码一位乘、两位乘和补码一位乘(Booth算法)、两位乘计算x·y。 (1)x= 0.110 111,y= -0.101 110; (2)x= -0.010 111,y= -0.010 101; (3)x= 19, y= 35; (4)x= 0.110 11, y= -0.111 01。

解:先将数据转换成所需的机器数,然后计算,最后结果转换成真值。 (1)[x]原=x=0.110111,[y]原=1.101110 x*=0.110111, y*=0.101110 x0=0,y0=1,z0=x0 ? y0=0 ? 1=1 x*×y*=0.100 111 100 010 [x×y]原=1.100 111 100 010 x·y= -0. 100 111 100 010 原码一位乘:

部分积 乘数y*

0 . 0 0 0 0 0 0 . 1 0 1 1 1 0 —— +0 ?1 0 . 0 0 0 0 0 0 0 . 1 0 1 1 1 —— +x* + 0 . 1 1 0 1 1 1 0 . 1 1 0 1 1 1

?1 0 . 0 1 1 0 1 1 1 0 . 1 0 1 1 —— +x* + 0 . 1 1 0 1 1 1 1 . 0 1 0 0 1 0

?1 0 . 1 0 1 0 0 1 0 1 0 . 1 0 1 —— +x* + 0 . 1 1 0 1 1 1 1 . 1 0 0 0 0 0

?1 0 . 1 1 0 0 0 0 0 0 1 0 . 1 0 —— +0 ?1 0 . 0 1 1 0 0 0 0 0 0 1 0 . 1 —— x* + 0 . 1 1 0 1 1 1 1 . 0 0 1 1 1 1

?1 0 . 1 0 0 1 1 1 1 0 0 0 1 0 2x*=01.101110,[-x*]补=[-x]补=1.001001 原码两位乘:

部分积 乘数 Cj 0 0 0 . 0 0 0 0 0 0 0 0 . 1 0 1 1 1 0 0 + 0 0 1 . 1 0 1 1 1 0 +2x*

0 0 1 . 1 0 1 1 1 0 0 ?2 0 0 0 . 0 1 1 0 1 1 1 0 0 0 .1 0 1 1 + 1 1 1 . 0 0 1 0 0 1 +[-x*]补

1 1 1 . 1 0 0 1 0 0 1 ?2 1 1 1 . 1 1 1 0 0 1 0 0 1 0 0 0 .1 0 + 1 1 1 . 0 0 1 0 0 1 +[-x*]补

1 1 1 . 0 0 0 0 1 0 1 ?2 1 1 1 . 1 1 0 0 0 0 1 0 0 0 1 0 0 0 . + 0 0 0 . 1 1 0 1 1 1 +x*

0 0 0 . 1 0 0 1 1 1 1 0 0 0 1 0 0 结果同一位乘,x·y= -0. 100 111 100 010 [x]补=x=0.110111 [y]补=1.010010 [-x]补=1.001001 [2x]补=01.101110 [-2x]补=10.010010

[x×y]补=1.011 000 011 110 0 x·y= -0.100 111 100 010 0 补码一位乘、两位乘运算过程如下:

补码一位乘:部分积 乘数[y]补 yn+1

0 0 . 0 0 0 0 0 0 1 . 0 1 0 0 1 0 0 ?1 0 0 . 0 0 0 0 0 0 0 1 . 0 1 0 0 1 0 + 1 1 . 0 0 1 0 0 1 +[-x] 1 1 . 0 0 1 0 0 1

?1 1 1 . 1 0 0 1 0 0 1 0 1 . 0 1 0 0 1 + 0 0 . 1 1 0 1 1 1 +[x] 0 0 . 0 1 1 0 1 1

?1 0 0 . 0 0 1 1 0 1 1 1 0 1 . 0 1 0 0 ?1 0 0 . 0 0 0 1 1 0 1 1 1 0 1 . 0 1 0 + 1 1 . 0 0 1 0 0 1 +[-x] 1 1 . 0 0 1 1 1 1

?1 1 1 . 1 0 0 1 1 1 1 1 1 1 0 1 . 0 1 + 0 0 . 1 1 0 1 1 1 +[x] 0 0 . 0 1 1 1 1 0

?1 0 0 . 0 0 1 1 1 1 0 1 1 1 1 0 1 . 0 + 1 1 . 0 0 1 0 0 1 +[-x] 1 1 . 0 1 1 0 0 0 0 1 1 1 1 0 0 (2) x= -0.010111, y= -0.010101 [x]原=1.010111, [y]原=1.010101 x*=0. 010111 , y*=0. 010101 [-x*]补=1.101001,2x*=0.101110 [-2x*]补=1.010010

x0=1,y0=1,z0=x0 ? y0=1 ? 1=0 [x]补=1.101001, [y]补=1.101011 [-x]补=0.010111,[2x]补=1.010010 [-2x]补=0.101110

x*×y*=0.000 111 100 011

—— +0 补 补 —— +0 补 补 补 —— 清0 [x×y]原=0.000 111 100 011 [x×y]补=0.000 111 100 011 0 x·y= 0. 000 111 100 011 运算过程如下: 原码一位乘:

部分积 乘数y*

0 . 0 0 0 0 0 0 . 0 1 0 1 0 1 —— +x* + 0 . 0 1 0 1 1 1 0 . 0 1 0 1 1 1

?1 0 . 0 0 1 0 1 1 1 . 0 1 0 1 0 —— +0 ?1 0 . 0 0 0 1 0 1 1 1 . 0 1 0 1 —— +x* + 0 . 0 1 0 1 1 1 0 . 0 1 1 1 0 0

?1 0 . 0 0 1 1 1 0 0 1 1 . 0 1 0 —— +0 ?1 0 . 0 0 0 1 1 1 0 0 1 1 . 0 1 —— +x* + 0 . 0 1 0 1 1 1 0 . 0 1 1 1 1 0

?1 0 . 0 0 1 1 1 1 0 0 0 1 1 . 0 —— +0 ?1 0 . 0 0 0 1 1 1 1 0 0 0 1 1 原码两位乘:

部分积 乘数y* Cj 0 0 0 . 0 0 0 0 0 0 0 0 . 0 1 0 1 0 1 0 + 0 0 0 . 0 1 0 1 1 1 +x*

0 0 0 . 0 1 0 1 1 1 0 ?2 0 0 0 . 0 0 0 1 0 1 1 1 0 0 .0 1 0 1 + 0 0 0 . 0 1 0 1 1 1 +x*

0 0 0 . 0 1 1 1 0 0 0 ?2 0 0 0 . 0 0 0 1 1 1 0 0 1 1 0 0 .0 1 + 0 0 0 . 0 1 0 1 1 1 +x*

0 0 0 . 0 1 1 1 1 0 0 ?2 0 0 0 . 0 0 0 1 1 1 1 0 0 0 1 1 0 0 . +0 结果同一位乘, x·y= 0. 000 111 100 011

补码一位乘:部分积 乘数[y]补 yn+1

0 0 . 0 0 0 0 0 0 1 . 1 0 1 0 1 1 0 + 0 0 . 0 1 0 1 1 1 +[-x]补 0 0 . 0 1 0 1 1 1

?1 0 0 . 0 0 1 0 1 1 1 1 . 1 0 1 0 1 1 —— +0 ?1 0 0 . 0 0 0 1 0 1 1 1 1 . 1 0 1 0 1 + 1 1 . 1 0 1 0 0 1 +[x]补 1 1 . 1 0 1 1 1 0

?1 1 1 . 1 1 0 1 1 1 0 1 1 1 . 1 0 1 0 + 0 0 . 0 1 0 1 1 1 +[-x]补 0 0 . 0 0 1 1 1 0

?1 0 0 . 0 0 0 1 1 1 0 0 1 1 1 . 1 0 1 + 1 1 . 1 0 1 0 0 1 +[x]补 1 1 . 1 1 0 0 0 0

?1 1 1 . 1 1 1 0 0 0 0 0 0 1 1 1 . 1 0 + 0 0 . 0 1 0 1 1 1 +[-x]补 0 0 . 0 0 1 1 1 1

?1 0 0 . 0 0 0 1 1 1 1 0 0 0 1 1 1 . 1 —— +0 (3) x= 19, y= 35 x=(10 011)2,y=(100 011)2 x*= [x]原= [x]补= 0,010 011 y*= [y]原= [y]补= 0,100 011 [-x*]补= [-x]补= 1,101 101 2x*= [2x]补= 0,100 110 [-2x*]补= [-2x]补= 1,011 010 x0=0,y0=0,z0=x0 ? y0=0 ? 0=0 x·y= x*×y*= [x×y]原= [x×y]补 = 0,001 010 011 001 = (665)10 运算过程如下: 原码一位乘:

部分积 乘数y*

0,0 0 0 0 0 0 1 0 0 0 1 1 —— +x* + 0,0 1 0 0 1 1 0,0 1 0 0 1 1

?1 0,0 0 1 0 0 1 1 1 0 0 0 1 —— +x* + 0,0 1 0 0 1 1 0,0 1 1 1 0 0

?1 0,0 0 1 1 1 0 0 1 1 0 0 0 —— +0 ?1 0,0 0 0 1 1 1 0 0 1 1 0 0 —— +0 ?1 0,0 0 0 0 1 1 1 0 0 1 1 0 —— +0 ?1 0,0 0 0 0 0 1 1 1 0 0 1 1 —— +x* + 0,0 1 0 0 1 1 0,0 1 0 1 0 0

?1 0,0 0 1 0 1 0 0 1 1 0 0 1 原码两位乘:

部分积 乘数y* Cj 0 0 0,0 0 0 0 0 0 0 0,1 0 0 0 1 1 0 + 1 1 1,1 0 1 1 0 1 +[-x*]补 1 1 1,1 0 1 1 0 1 1 ?2 1 1 1,1 1 1 0 1 1 0 1 0 0,1 0 0 0 + 0 0 0,0 1 0 0 1 1 +x*

0 0 0,0 0 1 1 1 0 0 ?2 0 0 0,0 0 0 0 1 1 1 0 0 1 0 0,1 0 + 0 0 0,1 0 0 1 1 0 +2x*

0 0 0,1 0 1 0 0 1 0 ?2 0 0 0,0 0 1 0 1 0 0 1 1 0 0 1 0 0,

+0 结果同一位乘, x·y= 0,001 010 011 001

补码一位乘:部分积 乘数[y]补 yn+1 0 0,0 0 0 0 0 0 0,1 0 0 0 1 1 0 + 1 1,1 0 1 1 0 1 +[-x]补 1 1,1 0 1 1 0 1

?1 1 1,1 1 0 1 1 0 1 0,1 0 0 0 1 1 —— +0 ?1 1 1,1 1 1 0 1 1 0 1 0,1 0 0 0 1 + 0 0,0 1 0 0 1 1 +[x]补 0 0,0 0 1 1 1 0

?1 0 0,0 0 0 1 1 1 0 0 1 0, 1 0 0 0 —— +0 ?1 0 0,0 0 0 0 1 1 1 0 0 1 0,1 0 0 —— +0 ?1 0 0,0 0 0 0 0 1 1 1 0 0 1 0,1 0

+ 1 1,1 0 1 1 0 1 +[-x]补 1 1,1 0 1 1 1 0

?1 1 1,1 1 0 1 1 1 0 1 1 0 0 1 0, 1 + 0 0,0 1 0 0 1 1 +[x]补 0 0,0 0 1 0 1 0 0 1 1 0 0 1 0

注:整数乘此位要省。 (4) x= 0. 110 11, y= -0.111 01 x*= [x]原= [x]补= 0. 110 11 [y]原=1.111 01,y*=0. 111 01 [y]补=1.000 11

[-x*]补= [-x]补= 1.001 01 2x*= [2x]补= 01.101 10 [-2x*]补= [-2x]补= 10.010 10 x0=0,y0=1,z0=x0 ? y0=0 ? 1=1 x*×y*=0.110 000 111 1 [x×y]原=1.110 000 111 1 [x×y]补=1.001 111 000 10 x·y= -0. 110 000 111 1 运算过程如下:

原码一位乘:部分积 乘数y*

0 . 0 0 0 0 0 . 1 1 1 0 1 —— +x* + 0 . 1 1 0 1 1 0 . 1 1 0 1 1

?1 0 . 0 1 1 0 1 1 . 1 1 1 0 —— +0 ?1 0 . 0 0 1 1 0 1 1 . 1 1 1 —— +x* + 0 . 1 1 0 1 1 1 . 0 0 0 0 1

?1 0 . 1 0 0 0 0 1 1 1 . 1 1 —— +x* + 0 . 1 1 0 1 1

1 . 0 1 0 1 1

?1 0 . 1 0 1 0 1 1 1 1 1 . 1 —— +x* + 0 . 1 1 0 1 1 1 . 1 0 0 0 0

?1 0 . 1 1 0 0 0 0 1 1 1 1 原码两位乘:

部分积 乘数y* Cj 0 0 0 . 0 0 0 0 0 0 . 1 1 1 0 1 0 + 0 0 0 . 1 1 0 1 1 +x*

0 0 0 . 1 1 0 1 1 0 ?2 0 0 0 . 0 0 1 1 0 1 1 0 . 1 1 1 + 1 1 1 . 0 0 1 0 1 +[-x*]补

1 1 1 . 0 1 0 1 1 1 ?2 1 1 1 . 1 1 0 1 0 1 1 1 1 . 0 1 + 0 0 1 . 1 0 1 1 0 +2x*

0 0 1 . 1 0 0 0 0 0 ?1 0 0 0 . 1 1 0 0 0 0 1 1 1 1 0 . +0 结果同一位乘, x·y= -0. 110 000 111 1 补码一位乘:

部分积 乘数[y]补 yn+1 0 0 . 0 0 0 0 0 1 . 0 0 0 1 1 0 + 1 1 . 0 0 1 0 1 +[-x]补 1 1 . 0 0 1 0 1

?1 1 1 . 1 0 0 1 0 1 1 . 0 0 0 1 1 —— +0 ?1 1 1 . 1 1 0 0 1 0 1 1 . 0 0 0 1 + 0 0 . 1 1 0 1 1 +[x]补 0 0 . 1 0 1 0 0

?1 0 0 . 0 1 0 1 0 0 0 1 1 . 0 0 0 —— +0 ?1 0 0 . 0 0 1 0 1 0 0 0 1 1 . 0 0 —— +0 ?1 0 0 . 0 0 0 1 0 1 0 0 0 1 1 . 0 + 1 1 . 0 0 1 0 1 +[-x]补 1 1 . 0 0 1 1 1 1 0 0 0 1 0 —— 清0

6.21 用原码加减交替法和补码加减交替法计算x÷y。 (1)x=0.100111,y=0.101011; (2)x=-0.10101, y=0.11011; (3)x=0.10100, y= -0.10001; (4)x=13/32, y= -27/32。 解:

(1)x*=[x]原=[x]补=x= 0.100 111 y*=[y]原=[y]补=y= 0.101 011 [-y*]补=[-y]补=1.010 101 q0=x0?y0=0 ?0=0

x?y=x*?y*=[x?y]原=0.111 010 r*=0.000 010×2-6=0.000 000 000 010 计算过程如下: 原码加减交替除法:

被除数(余数) 商

0 . 1 0 0 1 1 1 0 . 0 0 0 0 0 0 + 1 . 0 1 0 1 0 1 试减,+[-y*]补 1 . 1 1 1 1 0 0

1? 1 . 1 1 1 0 0 0 0 . + 0 . 1 0 1 0 1 1 r<0,+y* 0 . 1 0 0 0 1 1

1? 1 . 0 0 0 1 1 0 0.1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 0 . 0 1 1 0 1 1

1? 0 . 1 1 0 1 1 0 0.1 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 0 . 0 0 1 0 1 1

被除数(余数) 商

1? 0 . 0 1 0 1 1 0 0 . 1 1 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 1 . 1 0 1 0 1 1

1? 1 . 0 1 0 1 1 0 0.1 1 1 0 + 0 . 1 0 1 0 1 1 r<0,+y* 0 . 0 0 0 0 0 1

1? 0 . 0 0 0 0 1 0 0.1 1 1 0 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 0

+ 0 . 1 0 1 0 1 1 r<0,+y*(恢复余数) 0 . 0 0 0 0 1 0 补码加减交替除法:

被除数(余数) 商

0 0 . 1 0 0 1 1 1 0 . 0 0 0 0 0 0 + 1 1 . 0 1 0 1 0 1 试减,x、y同号,+[-y]补 1 1 . 1 1 1 1 0 0

1? 1 1 . 1 1 1 0 0 0 0 . + 0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 . 1 0 0 0 1 1

1? 0 1 . 0 0 0 1 1 0 0.1

+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 1 1 0 1 1

1? 0 0 . 1 1 0 1 1 0 0.1 1

+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 0 1 0 1 1 被除数(余数) 商

1? 0 0 . 0 1 0 1 1 0 0 . 1 1 1 + 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 1 1 . 1 0 1 0 1 1

1? 1 1 . 0 1 0 1 1 0 0.1 1 1 0 + 0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 . 0 0 0 0 0 1

1? 0 0 . 0 0 0 0 1 0 0.1 1 1 0 1

+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 1 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 1 —— 恒置1 + 0 0 . 1 0 1 0 1 1 r、x异号,(恢复余数) 0 0 . 0 0 0 0 1 0 且r、y异号, +[y]补 注:恒置1引入误差。 x?y=[x?y]补= 0.111 011 [r]补=0.000 010,r=r*=0.000 000 000 010 (2)x= -0.101 01,y=0.110 11 [x]原=1.101 01 x*= 0.101 01

y* = [y]原 = [y]补= y = 0.110 11 [-y*]补= [-y]补= 1.001 01 [x]补= 1.010 11

q0 = x0 ? y0 = 1 ? 0 = 1 x*?y*= 0.110 00 [x?y]原=1.110 00 x?y = -0.110 00 r*=0.110 00×2-5

=0.000 001 100 0 计算过程如下: 原码加减交替除法:

被除数(余数) 商

0 . 1 0 1 0 1 0 . 0 0 0 0 0 + 1 . 0 0 1 0 1 试减,+[-y*]补 1 . 1 1 0 1 0

1? 1 . 1 0 1 0 0 0 . + 0 . 1 1 0 1 1 r<0,+y* 0 . 0 1 1 1 1

1? 0 . 1 1 1 1 0 0.1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 0 0 0 1 1

1? 0 . 0 0 1 1 0 0.1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 1 . 0 1 0 1 1

被除数(余数) 商

1? 0 . 1 0 1 1 0 0 . 1 1 0 + 0 . 1 1 0 1 1 r<0, +y* 1 . 1 0 0 0 1

1? 1 . 0 0 0 1 0 0.1 1 0 0 + 0 . 1 1 0 1 1 r<0,+y* 1 . 1 1 1 0 1 1? 0.1 1 0 0 0

+ 0 . 1 1 0 1 1 r<0, +y*(恢复余数) 0 . 1 1 0 0 0 补码加减交替除法:

被除数(余数) 商

1 1 . 0 1 0 1 1 0 . 0 0 0 0 0 + 0 0 . 1 1 0 1 1 试减,x、y异号,+[y]补 0 0 . 0 0 1 1 0

1? 0 0 . 0 1 1 0 0 1 . + 1 1 . 0 0 1 0 1 r、y同号,+[-y]补 1 1 . 1 0 0 0 1

1? 1 1 . 0 0 0 1 0 1.0

+ 0 0 . 1 1 0 1 1 r、y异号, +[y]补 1 1 . 1 1 1 0 1

1? 1 1 . 1 1 0 1 0 1.0 0

+ 0 0 . 1 1 0 1 1 r、y异号, +[y]补 0 0 . 1 0 1 0 1

被除数(余数) 商

1? 0 1 . 0 1 0 1 0 1 . 0 0 1 + 1 1 . 0 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 1 1 1 1

1? 0 0 . 1 1 1 1 0 1.0 0 1 1 + 1 1 . 0 0 1 0 1 r、y同号,+[-y]补 0 0 . 0 0 0 1 1 1? 1.0 0 1 1 1 —— 恒置1 + 1 1 . 0 0 1 0 1 r、x异号,(恢复余数) 1 1 . 0 1 0 0 0 且r、y同号,+[-y]补 注:恒置1引入误差。

[r]补=1.010 00, r= -0.000 001 100 0 [x?y]补=1.001 11,x?y= -0.110 01 (3)x= 0.101 00,y= -0.100 01 x*= [x]原= [x]补= x=0.101 00 [y]原 = 1.100 01 y* = 0.100 01 [-y*]补=1.011 11 [y]补= 1.011 11 [-y]补= 0.100 01 q0 = x0 ? y0 = 0 ? 1 = 1 x*?y*= 1.001 01 —— 溢出 [x?y]原:无定义 x?y = -1.001 01 r*=0.010 11×2-5

=0.000 000 101 1

计算过程如下: 原码加减交替除法:

被除数(余数) 商

0 . 1 0 1 0 0 0 . 0 0 0 0 0 + 1 . 0 1 1 1 1 试减,+[-y*]补

0 . 0 0 0 1 1 1? 0 . 0 0 1 1 0 1 . + 1 . 0 1 1 1 1 r>0, +[-y*]补

1 . 1 0 1 0 1 1? 1 . 0 1 0 1 0 1.0 + 0 . 1 0 0 0 1 r<0, +y* 1 . 1 1 0 1 1

1? 1 . 1 0 1 1 0 1.0 0 + 0 . 1 0 0 0 1 r<0, +y* 0 . 0 0 1 1 1

被除数(余数) 商

1? 0 . 0 1 1 1 0 1 . 0 0 1 + 1 . 0 1 1 1 1 r>0, +[-y*]补 1 . 1 1 1 0 1

1? 1 . 1 1 0 1 0 1.0 0 1 0 + 0 . 1 0 0 0 1 r<0,+y* 0 . 0 1 0 1 1 1? 1.0 0 1 0 1 r>0, 结束

注:当x*>y*时产生溢出,这种情况在第一步运算后判断r的正负时就可发现。此时数值位占领小数点左边的1位,原码无定义,但算法本身仍可正常运行。 补码加减交替除法:

被除数(余数) 商

0 0 . 1 0 1 0 0 0 . 0 0 0 0 0 + 1 1 . 0 1 1 1 1 试减,x、y异号,+[y]补 0 0 . 0 0 0 1 1

1? 0 0 . 0 0 1 1 0 0 . + 1 1 . 0 1 1 1 1 r、y异号,+[y]补 1 1 . 1 0 1 0 1

1? 1 1 . 0 1 0 1 0 0.1

+ 0 0 . 1 0 0 0 1 r、y同号, +[-y]补 1 1 . 1 1 0 1 1

1? 1 1 . 1 0 1 1 0 0.1 1

+ 0 0 . 1 0 0 0 1 r、y同号, +[-y]补 0 0 . 0 0 1 1 1

被除数(余数) 商

1? 0 0 . 0 1 1 1 0 0 . 1 1 0 + 1 1 . 0 1 1 1 1 r、y异号, +[y]补 1 1 . 1 1 1 0 1

1? 1 1 . 1 1 0 1 0 0.1 1 0 1

+ 0 0 . 1 0 0 0 1 r、y同号,+[-y]补 0 0 . 0 1 0 1 1 1? 0.1 1 0 1 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 真符位的产生:qf = x0 ? y0 = 0 ? 1 = 1 [x?y]补=10.110 11,x?y= -1.001 01 判溢出:qf ? q0 = 1 ? 0 = 1,溢出

注:由于本题中x*>y*,有溢出。除法运算时一般在运算前判断是否x* >y*,如果该条件成立则停止运算,转溢出处理。但此算法本身在溢出情况下仍可正常运行,此时数值位占领小数点左边的1位,商需设双符号位(变形补码),以判溢出。采用这种方法时运算前可不判溢出,直接进行运算,运算完后再判溢出。 (4)x=13/32=(0.011 01)2

y= -27/32=(-0.110 11)2 x*= [x]原= [x]补= x=0. 011 01 [y]原 = 1.110 11 y* = 0.110 11 [-y*]补=1.001 01 [y]补= 1.001 01 [-y]补= 0.110 11 q0 = x0 ? y0 = 0 ? 1 = 1 x*?y*= 0.011 11 [x?y]原=1.011 11

x?y =(-0.011 11)2 = -15/32 r*=0.010 11×2-5

=0.000 000 101 1 原码加减交替除法:

被除数(余数) 商

0 . 0 1 1 0 1 0 . 0 0 0 0 0 + 1 . 0 0 1 0 1 试减,+[-y*]补

1 . 1 0 0 1 0 1? 1 . 0 0 1 0 0 0 . + 0 . 1 1 0 1 1 r<0, +y*

1 . 1 1 1 1 1 1? 1 . 1 1 1 1 0 0.0 + 0 . 1 1 0 1 1 r<0, +y* 0 . 1 1 0 0 1

1? 1 . 1 0 0 1 0 0.0 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 1 1 1 被除数(余数) 商

1? 1 . 0 1 1 1 0 0 . 0 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 0 1 1

1? 1 . 0 0 1 1 0 0.0 1 1 1

+ 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 0 1 0 1 1 1? 0.0 1 1 1 1 r>0, 结束 补码加减交替除法:

被除数(余数) 商

0 0 . 0 1 1 0 1 0 . 0 0 0 0 0 + 1 1 . 0 0 1 0 1 试减,x、y异号,+[y]补 1 1 . 1 0 0 1 0

1? 1 1 . 0 0 1 0 0 1 . + 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 1 1 . 1 1 1 1 1

1? 1 1 . 1 1 1 1 0 1.1

+ 0 0 . 1 1 0 1 1 r、y同号,+[-y]补 0 0 . 1 1 0 0 1

1? 0 1 . 1 0 0 1 0 1.1 0

+ 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 1 1 1

被除数(余数) 商

1? 0 1 . 0 1 1 1 0 1 . 1 0 0 + 1 1 . 0 0 1 0 1 r、y异号, +[y]补 0 0 . 1 0 0 1 1

1? 0 1 . 0 0 1 1 0 1.1 0 0 0 + 1 1 . 0 0 1 0 1 r、y异号,+[y]补 0 0 . 0 1 0 1 1 1? 1.1 0 0 0 1 —— 恒置1 r、x同号,结束 [r]补=0.010 11,r=r*=0.000 000 101 1 [x?y]补=1.100 01,x?y=(-0.011 11)2 = -15/32

22. 设机器字长为16位(含1位符号位),若一次移位需1μs,一次加法需1 μs,试问原码一位乘、补码一位乘、原码加减交替除法和补码加减交替除法各最多需多少时间? 解:原码一位乘最多需时 1μs×15(加)+ 1μs×15(移位)=30μs 补码一位乘最多需时 1μs×16+1μs×15 = 31μs 原码加减交替除最多需时 1μs×(16+1)+1μs×15=32μs (或33μs) 补码加减交替除最多需时 1μs×(16+1) +1μs×15=32μs (或33μs) (包括最后恢复余数!)

25. 对于尾数为40位的浮点数(不包括符号位在内),若采用不同的机器数表示,试问当尾数左规或右规时,最多移位次数各为多少? 解:对于尾数为40位的浮点数,若采用原码表示,当尾数左规时,最多移位39次;反码表示时情况同原码;若采用补码表示,当尾数左规时,正数最多移位39次,同原码;负数最多移位40次。当尾数右规时,不论采用何种码制,均只需右移1次。

26.按机器补码浮点运算步骤,计算[x±y]补. (1)x=2

-011

× 0.101 100,y=2

-010

×(-0.011 100);

(2)x=2

-011101

×(-0.100 010),y=2

-010

×(-0.011 111);

(3)x=2×(-0.100 101),y=2×(-0.001 111)。 解:先将x、y转换成机器数形式: (1)x=2

-011

100

× 0.101 100,y=2

-010

×(-0.011 100)

[x]补=1,101;0.101 100, [y]补=1,110;1.100 100

[Ex]补=1,101, [y]补=1,110, [Mx]补=0.101 100, [My]补=1.100 100 1)对阶:

[?E]补=[Ex]补+[-Ey]补 = 11,101+ 00,010=11,111 < 0,

应Ex向Ey对齐,则:[Ex]补+1=11,101+00,001=11,110 = [Ey]补 [x]补=1,110;0.010 110 2)尾数运算:

[Mx]补+[My]补= 0.010 110 + 11.100 100=11.111010

[Mx]补+[-My]补=0.010 110 + 00.011100= 00.110 010 3)结果规格化:

[x+y]补=11,110;11.111 010 = 11,011;11.010 000 (尾数左规3次,阶码减3) [x-y]补=11,110;00.110 010, 已是规格化数。 4)舍入:无 5)溢出:无 则:x+y=2

(2)x=2

-011

-101

×(-0.110 000) ×0.110 010

010

x-y =2

-010

×(-0.100010),y=2-×(-0.011111)

[x]补=1,101;1.011 110, [y]补=1,110;1.100 001

1) 对阶:过程同(1)的1),则 [x]补=1,110;1.101 111 2)尾数运算:

[Mx]补+[My]补= 11.101111 + 11. 100001 = 11.010000 [Mx]补+[-My]补= 11.101111 + 00.011111 = 00.001110

3)结果规格化:

[x+y]补=11,110;11.010 000,已是规格化数

[x-y]补=11,110;00.001 110 =11,100;00.111000 (尾数左规2次,阶码减2) 4)舍入:无 5)溢出:无 则:x+y=2

(3)x=2×(-0.100 101),y=2×(-0.001 111) [x]补=0,101;1.011 011, [y]补=0,100;1.110 001

1)对阶:

[?E]补=00,101+11,100=00,001 >0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101=[Ex]补 [y]补=0,101;1.111 000(1) 2)尾数运算:

[Mx]补+[My]补= 11.011011+ 11.111000(1)= 11.010011(1)

101

100

-010

×(-0.110 000) ×0.111 000

x-y =2

-100

[Mx]补+[-My]补= 11.011011+ 00.000111(1)= 11.100010(1) 2) 结果规格化:

[x+y]补=00,101;11.010 011(1),已是规格化数

[x-y]补=00,101;11.100 010(1)=00,100;11.000 101 (尾数左规1次,阶码减

1)

4)舍入:

[x+y]补=00,101;11.010 011(舍) [x-y]补 不变 5)溢出:无

则:x+y=2×(-0.101 101)

x-y =2×(-0.111 011)

6.27、假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。 (1)[25×(11/16)]+[24×(-9/16)] (2)[2-3×(13/16)]-[2-4×(-5/8)] (3)[23×(13/16)]×[24×(-9/16)] (4)[26×(-11/16)]÷[23×(-15/16)] (5)[23×(-1)] ×[2-2×57/64] (6)[2-6×(-1)]÷[27×(-1/2)] (7)3.3125+6.125 (8)14.75-2.4375

解:设机器数采用阶补尾补形式: (1)x= 25×(11/16)= 2101×0.101100

y= 24×(-9/16)=2100×(-0.100100)则: [x]阶补尾补=00,101;00.101100 [y]阶补尾补=00,100;11.011100 1)对阶:

[?E]补=[Ex]补+[-Ey]补 =00,101+11,100=00,001

[?E]补>0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=00,101;11.101110 2)尾数运算:

[Mx]补+[My]补= 0 0 . 1 0 1 1 0 0

+ 1 1 . 1 0 1 1 1 0 0 0 . 0 1 1 0 1 0 3)结果规格化:左规1位

[x+y]补=00,101;00.011 010 =00,100;00.110 100 4)舍入:不需舍入。 5)溢出:无

则:x+y=2100×(0.110 100) =24×(13/16)

100101

(2)[2-3×(13/16)]-[2-4×(-5/8)] x= 2-3×(13/16)= 2-011×0.110 100 y= 2-4×(-5/8)=2-100×(-0.101000) [x]阶补尾补=11,101;00.110100 [y]阶补尾补=11,100;11.011000 1)对阶:

[?E]补=[Ex]补+[-Ey]补 =11,101+00,100=00,001

[?E]补>0,应Ey向Ex对齐,则:

[Ey]补+1=11,100+00,001=11,101 [?E]补+[-1]补=00,001+11,111=0 至此, Ey=Ex,对毕。 [y]补=11,101;11.101100 2)尾数运算:

[Mx]补+[-My]补= 0 0 . 1 1 0 1 0 0

+ 0 0 . 0 1 0 1 0 0 0 1 . 0 0 1 0 0 0 3)结果规格化:右规

[x-y]补=11,101;01.001 000 =11,110;00.100 100 4)舍入:不需舍入。

(3)[23×(13/16)]×[24×(-9/16)] x= 23×(13/16)=2011×(0.110 100) y= 24×(-9/16)=2100×(-0.100 100) [x]阶补尾补=00,011;0.110 100 [y]阶补尾补=00,100;1.011 100 1)阶码相加:

[Ex]补+[Ey]补=00,011+ 00,100

=00,111(无溢出) 2)尾数相乘:

补码两位乘比较法,见下页。 [Mx × My]补=11.100 010(110 000 00) 3)结果规格化:左规1位。

[x×y]补=0,111;1.100 010(110 000 00) =0,110;1.000 101(100 000 0) 2)尾数相乘: (补码两位乘比较法)

部分积 乘数 yn+1 0 0 0 . 0 0 0 0 0 0 1 1 . 0 1 1 1 0 0 0 + 0 0 0 . 0 0 0 0 0 0 +[-0]补 0 0 0 . 0 0 0 0 0 0

?2 0 0 0 . 0 0 0 0 0 0 0 0 1 1 .0 1 1 1 0 + 1 1 1 . 0 0 1 1 0 0 +[-x]补 1 1 1 . 0 0 1 1 0 0 ?2 1 1 1 . 1 1 0 0 1 1 0 0 0 0 1 1 . 0 1 1

本文来源:https://www.bwwdw.com/article/oizt.html

Top