计算机组成原理(第二版)课后题答案

更新时间:2024-06-13 12:45:01 阅读量: 综合文库 文档下载

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

第1章 计算机系统概论

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

计算机系统:由计算机硬件系统和软件系统组成的综合体。

计算机硬件:指计算机中的电子线路和物理装置。 计算机软件:计算机运行所需的程序及相关资料。

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

2. 如何理解计算机的层次结构?

答:计算机硬件、系统软件和应用软件构成了计算机系统的三个层次结构。

(1)硬件系统是最内层的,它是整个计算机系统的基础和核心。

(2)系统软件在硬件之外,为用户提供一个基本操作界面。

(3)应用软件在最外层,为用户提供解决具体问题的应用系统界面。

通常将硬件系统之外的其余层称为虚拟机。各层次之间关系密切,上层是下层的扩展,下层是上层的基础,各层次的划分不是绝对的。

3. 说明高级语言、汇编语言和机器语言的差别及其联系。

答:机器语言是计算机硬件能够直接识别的语言,汇编语言是机器语言的符号表示,高级语言是面向算法的语言。高级语言编写的程序(源程序)处于最高层,必须翻译成汇编语言,再由汇编程序汇编成机器语言(目标程序)之后才能被执行。

4. 如何理解计算机组成和计算机体系结构?

答:计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,如指令系统、数据类型、寻址技术组成及I/O机理等。计算机组成是指如何实现计算机体系结构所体现的属性,包含对程序员透明的硬件细节,如组成计算机系统的各个功能部件的结构和功能,及相互连接方法等。

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

? ? ? ? ? ?

6. 画出计算机硬件组成框图,说明各部件的作用及计算机系统的主要技术指标。 答:计算机硬件组成框图如下:

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

指令和数据均用二进制表示;

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

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

控制器运算器CPU存储器接口接口输入设备主机外设输出设备

各部件的作用如下:

控制器:整机的指挥中心,它使计算机的各个部件自动协调工作。 运算器:对数据信息进行处理的部件,用来进行算术运算和逻辑运算。 存储器:存放程序和数据,是计算机实现“存储程序控制”的基础。

输入设备:将人们熟悉的信息形式转换成计算机可以接受并识别的信息形式的设备。 输出设备:将计算机处理的结果(二进制信息)转换成人类或其它设备可以接收和识别的信息形式的设备。

计算机系统的主要技术指标有:

机器字长:指CPU一次能处理的数据的位数。通常与CPU的寄存器的位数有关,字长越长,数的表示范围越大,精度也越高。机器字长也会影响计算机的运算速度。

数据通路宽度:数据总线一次能并行传送的数据位数。

存储容量:指能存储信息的最大容量,通常以字节来衡量。一般包含主存容量和辅存容量。

运算速度:通常用MIPS(每秒百万条指令)、MFLOPS(每秒百万次浮点运算)或CPI(执行一条指令所需的时钟周期数)来衡量。CPU执行时间是指CPU对特定程序的执行时间。

主频:机器内部主时钟的运行频率,是衡量机器速度的重要参数。

吞吐量:指流入、处理和流出系统的信息速率。它主要取决于主存的存取周期。 响应时间:计算机系统对特定事件的响应时间,如实时响应外部中断的时间等。

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. 什么是摩尔定律?该定律是否永远生效?为什么? 答:P23,否,P36

第3章 系统总线

1. 什么是总线?总线传输有何特点?为了减轻总线负载,总线上的部件应具备什么特点? 答:P41.总线是一种能由多个部件分时共享的公共信息传送线路。

总线传输的特点是:某一时刻只允许有一个部件向总线发送信息,但多个部件可以同时从总线上接收相同的信息。

为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。

2. 总线如何分类?什么是系统总线?系统总线又分为几类,它们各有何作用,是单向的,还是双向的,它们与机器字长、存储字长、存储单元有何关系?

答:按照连接部件的不同,总线可以分为片内总线、系统总线和通信总线。

系统总线是连接CPU、主存、I/O各部件之间的信息传输线。

系统总线按照传输信息不同又分为地址线、数据线和控制线。地址线是单向的,其根数越多,寻址空间越大,即CPU能访问的存储单元的个数越多;数据线是双向的,其根数与存储字长相同,是机器字长的整数倍。

3. 常用的总线结构有几种?不同的总线结构对计算机的性能有什么影响?举例说明。 答:略。见P52-55。

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

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

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

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

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

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

总线带宽:总线的数据传输率,指单位时间内总线上传输数据的位数;

总线复用:指同一条信号线可以分时传输不同的信号。 总线的主设备(主模块):指一次总线传输期间,拥有总线控制权的设备(模块); 总线的从设备(从模块):指一次总线传输期间,配合主设备完成数据传输的设备(模块),它只能被动接受主设备发来的命令;

总线的传输周期:指总线完成一次完整而可靠的传输所需时间;

总线的通信控制:指总线传送过程中双方的时间配合方式。

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

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

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

7. 画图说明异步通信中请求与回答有哪几种互锁关系?

答:见P61-62,图3.86。

8. 为什么说半同步通信同时保留了同步通信和异步通信的特点? 答:半同步通信既能像同步通信那样由统一时钟控制,又能像异步通信那样允许传输时间不一致,因此工作效率介于两者之间。

9. 分离式通讯有何特点,主要用于什么系统? 答:分离式通讯的特点是:(1)各模块欲占用总线使用权都必须提出申请;(2)在得到总线使用权后,主模块在先定的时间内向对方传送信息,采用同步方式传送,不再等待对方的回答信号;(3)各模块在准备数据的过程中都不占用总线,使总线可接受其它模块的请求;(4)总线被占用时都在做有效工作,或者通过它发送命令,或者通过它传送数据,不存在空闲等待时间,充分利用了总线的占用,从而实现了总线在多个主、从模块间进行信息交叉重叠并行传送。

分离式通讯主要用于大型计算机系统。

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三态门TcpD

图(1)

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

A接收门1三态门2CPT0T1T2+T3T1T2T3BUS三态门1T0+T1接收门2T3DB

图(2)

13. 什么是总线的数据传输率,它与哪些因素有关?

答:总线数据传输率即总线带宽,指单位时间内总线上传输数据的位数,通常用每秒传输信息的字节数来衡量。它与总线宽度和总线频率有关,总线宽度越宽,频率越快,数据传输率越高。

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

解:由于:f=8MHz,T=1/f=1/8M秒,一个总线周期等于一个时钟周期

所以:总线带宽=16/(1/8M) = 128Mbps

15. 在一个32位的总线系统中,总线的时钟频率为66MHZ,假设总线最短传输周期为4个时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施? 解:总线传输周期=4*1/66M秒

总线的最大数据传输率=32/(4/66M)=528Mbps

若想提高数据传输率,可以提高总线时钟频率、增大总线宽度或者减少总线传输周期包含的时钟周期个数。

16. 在异步串行传送系统中,字符格式为:1个起始位、8个数据位、1个校验位、2个终止位。若要求每秒传送120个字符,试求传送的波特率和比特率。 解:一帧包含:1+8+1+2=12位 故波特率为:(1+8+1+2)*120=1440bps 比特率为:8*120=960bps

存储器

1. 解释概念:主存、辅存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory。

答:主存:主存储器,用于存放正在执行的程序和数据。CPU可以直接进行随机读写,访问速度较高。

辅存:辅助存储器,用于存放当前暂不执行的程序和数据,以及一些需要永久保存的信息。

Cache:高速缓冲存储器,介于CPU和主存之间,用于解决CPU和主存之间速度不匹配问题。

RAM:半导体随机存取存储器,主要用作计算机中的主存。

SRAM:静态半导体随机存取存储器。

DRAM:动态半导体随机存取存储器。

ROM:掩膜式半导体只读存储器。由芯片制造商在制造时写入内容,以后只能读出而不能写入。

PROM:可编程只读存储器,由用户根据需要确定写入内容,只能写入一次。

EPROM:紫外线擦写可编程只读存储器。需要修改内容时,现将其全部内容擦除,然后再编程。擦除依靠紫外线使浮动栅极上的电荷泄露而实现。

EEPROM:电擦写可编程只读存储器。 CDROM:只读型光盘。

Flash Memory:闪速存储器。或称快擦型存储器。

2. 计算机中哪些部件可以用于存储信息?按速度、容量和价格/位排序说明。 答:计算机中寄存器、Cache、主存、硬盘可以用于存储信息。

按速度由高至低排序为:寄存器、Cache、主存、硬盘;

按容量由小至大排序为:寄存器、Cache、主存、硬盘; 按价格/位由高至低排序为:寄存器、Cache、主存、硬盘。

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

字节地址字地址-9

0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H0000H 0001H0002H主存字地址和字节地址的分配情况:如图

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片

8. 试比较静态RAM和动态RAM。 答:略。(参看课件)

9. 什么叫刷新?为什么要刷新?说明刷新有几种方法。 解:刷新:对DRAM定期进行的全部重写过程;

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

刷新操作;

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

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

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位 = 219位;

思路:如要满足地址线和数据线总和最小,应尽量把存储元安排在字向,因为地址位数和字数成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;

a

19

19-a

?? ??

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

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

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

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

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

(5)CPU如何选择各模块板? 解:(1)该机所允许的最大主存空间是:218 × 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位)

15. 设CPU共有16根地址线,8根数据线,并用MREQ(低电平有效)作访存控制信号,。现有下列存储芯片:ROM(2K×8位,R/W作读写命令信号(高电平为读,低电平为写)

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-3FFFH

(2)选片:ROM:选择4K×4位芯片2片,位并联

RAM:选择4K×8位芯片3片,字串联(RAM1地址范围为:1000H-1FFFH,RAM2地址范围为2000H-2FFFH, RAM3地址范围为:3000H-3FFFH)

(3)各芯片二进制地址分配如下: A15 A14 A13 A12 A1A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 ROM1,2 RAM1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 RAM2 RAM3 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 CPU和存储器连接逻辑图及片选逻辑如下图(3)所示: MREQG1G2AA15A14A13A12A11A0G2BABCY774138Y3Y2Y1Y0......PD/PROG...ROM2......RAM1...CS...RAM2...CS...RAM3...CPUROM1...OEOER/WR/WR/WCSD0D3D4......D7R/W图(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 c3=b3⊕b2⊕b1

当有效信息为1100时,c3c2c1=110,汉明码为0111100。 当有效信息为1101时,c3c2c1=001,汉明码为1010101。 当有效信息为1110时,c3c2c1=000,汉明码为0010110。 当有效信息为1111时,c3c2c1=111,汉明码为1111111。

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’)出错,

k

有效信息为:0001

19. 已经接收到下列汉明码,分别写出它们所对应的欲传送代码。

(1)1100000(按偶性配置) (2)1100010(按偶性配置)

(3)1101001(按偶性配置) (4)0011001(按奇性配置) (5)1000000(按奇性配置) (6)1110001(按奇性配置)

解:(一)假设接收到的汉明码为C1’C2’B4’C3’B3’B2’B1’,按偶性配置则:

P1=C1’⊕B4’⊕B3’⊕B1’ P2=C2’⊕B4’⊕B2’⊕B1’ P3=C3’⊕B3’⊕B1’

(1)如接收到的汉明码为1100000, P1=1⊕0⊕0⊕0=1 P2=1⊕0⊕0⊕0=1

P3=0⊕0⊕0=0

P3P2P1=011,第3位出错,可纠正为1110000,故欲传送的信息为1000。 (2)如接收到的汉明码为1100010, P1=1⊕0⊕0⊕0=1 P2=1⊕0⊕1⊕0=0

P3=0⊕0⊕0=0

P3P2P1=001,第1位出错,可纠正为0100010,故欲传送的信息为0010。 (3)如接收到的汉明码为1101001, P1=1⊕0⊕0⊕1=0 P2=1⊕0⊕0⊕1=0 P3=1⊕0⊕1=0

P3P2P1=000,传送无错,故欲传送的信息为0001。

(二)假设接收到的汉明码为C1’C2’B4’C3’B3’B2’B1’,按奇性配置则: P1=C1’⊕B4’⊕B3’⊕B1’⊕1 P2=C2’⊕B4’⊕B2’⊕B1’⊕1 P3=C3’⊕B3’⊕B1’⊕1

(4)如接收到的汉明码为0011001, P1=0⊕1⊕0⊕1⊕1=1 P2=0⊕1⊕0⊕1⊕1=1 P3=1⊕0⊕1⊕1=1

P3P2P1=111,第7位出错,可纠正为0011000,故欲传送的信息为1000。 (5)如接收到的汉明码为1000000, P1=1⊕0⊕0⊕0⊕1=0 P2=0⊕1⊕0⊕0⊕1=0 P3=0⊕0⊕0⊕1=1

P3P2P1=100,第4位出错,可纠正为1001000,故欲传送的信息为0000。 (6)如接收到的汉明码为1110001, P1=1⊕1⊕0⊕1⊕1=0

P2=1⊕1⊕0⊕1⊕1=0

P3=0⊕0⊕1⊕1=0

P3P2P1=000,传送无错,故欲传送的信息为1001。

20. 欲传送的二进制代码为1001101,用奇校验来确定其对应的汉明码,若在第6位出错,说明纠错过程。 解:欲传送的二进制代码为1001101,有效信息位数为n=7位,则汉明校验的校验位为k位,则:2k>=n+k+1,k=4,进行奇校验设校验位为C1C2C3C4,汉明码为C1C2B7C3B6B5B4C4B3B2B1, C1=1⊕B7⊕B6⊕B4⊕B3⊕B1=1⊕1⊕0⊕1⊕1⊕1=1 C2=1⊕B7⊕B5⊕B4⊕B2⊕B1=1⊕1⊕0⊕1⊕0⊕1=0 C3=1⊕B6⊕B5⊕B4=1⊕0⊕0⊕1=0 C4=1⊕B3⊕B2⊕B1=1⊕1⊕0⊕1=1

故传送的汉明码为10100011101,若第6位(B5)出错,即接收的码字为10100111101,则 P1=1⊕C1’⊕B7’⊕B6’⊕B4’⊕B3’⊕B1’=1⊕1⊕1⊕0⊕1⊕1⊕1=0 P2=1⊕C2’⊕B7’⊕B5’⊕B4’⊕B2’⊕B1’=1⊕0⊕1⊕1⊕1⊕0⊕1=1 P3=1⊕C3’⊕B6’⊕B5’⊕B4’=1⊕0⊕0⊕1⊕1=1

P4=1⊕C4’⊕B3’⊕B2’⊕B1’=1⊕1⊕1⊕0⊕1=0

P4P3P2P1=0110说明第6位出错,对第6位取反即完成纠错。

21. 为什么在汉明码纠错过程中,新的检测位P4P2P1的状态即指出了编码中错误的信息位?

答:汉明码属于分组奇偶校验,P4P2P1=000,说明接收方生成的校验位和收到的校验位相同,否则不同说明出错。由于分组时校验位只参加一组奇偶校验,有效信息参加至少两组奇偶校验,若果校验位出错,P4P2P1的某一位将为1,刚好对应位号4、2、1;若果有效信息出错,将引起P4P2P1中至少两位为1,如B1出错,将使P4P1均为1,P2=0,P4P2P1=101,

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

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

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

23. 设CPU共有16根地址线,8根数据线,并用M/IO作为访问存储器或I/O的控制信号(高

电平为访存,低电平为访I/O),WR(低电平有效)为写命令,RD(低电平有效)为读命令。设计一个容量为64KB的采用低位交叉编址的8体并行结构存储器。现有下图所示的存

Ai A0...RAMOECEWE...储器芯片和138译码器。Dn D0 画出CPU和存储器芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。

解:8体低位交叉并行存储器的每个存储体容量为64KB/8=8KB,因此应选择8KBRAM芯片,芯片地址线12根(A0-A12),数据线8根(D0-D7),用138译码器进行存储体的选择。设计如下:

+5V。G1G2A。Y7MREQA0A1A2A15.G2BABC74138。。。。Y3Y2Y1Y0..........RAM1......RAM2......RAM3...A3.....RAM0......A0 A12CEOEWED0 D7A0 A12CEA0 A12CEOEWED0 D7A0 A12CEOEWED0 D7A0 A12CEOEWED0 D7CPUD0OEWED0 D7RAM7..................D7..WRRD..........

24. 一个4体低位交叉的存储器,假设存储周期为T,CPU每隔1/4存取周期启动一个存储体,试问依次访问64个字需多少个存取周期?

解:4体低位交叉的存储器的总线传输周期为τ,τ=T/4,依次访问64个字所需时间为:

t=T+(64-1) τ=T+63T/4=16.75T

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

26. 计算机中设置Cache的作用是什么?能否将Cache的容量扩大,最后取代主存,为什么? 答:计算机中设置Cache的作用是解决CPU和主存速度不匹配问题。

不能将Cache的容量扩大取代主存,原因是:(1)Cache容量越大成本越高,难以满足人们追求低价格的要求;(2)如果取消主存,当CPU访问Cache失败时,需要将辅存的内容调入Cache再由CPU访问,造成CPU等待时间太长,损失更大。

27. 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),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。

28. 设主存容量为256K字,Cache容量为2K字,块长为4。

(1)设计Cache地址格式,Cache中可装入多少块数据?

(2)在直接映射方式下,设计主存地址格式。

(3)在四路组相联映射方式下,设计主存地址格式。 (4)在全相联映射方式下,设计主存地址格式。

(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。 解:(1)Cache容量为2K字,块长为4,Cache共有2K/4=211/22=29=512块, Cache字地址9位,字块内地址为2位 因此,Cache地址格式设计如下:

Cache字块地址(9位) 字块内地址(2位) (2)主存容量为256K字=218字,主存地址共18位,共分256K/4=216块, 主存字块标记为18-9-2=7位。

直接映射方式下主存地址格式如下:

主存字块标记(7位) Cache字块地址(9位) 字块内地址(2位) 7

(3)根据四路组相联的条件,一组内共有4块,得Cache共分为512/4=128=2组,

主存字块标记为18-7-2=9位,主存地址格式设计如下:

主存字块标记(9位) 组地址(7位) 字块内地址(2位) (4)在全相联映射方式下,主存字块标记为18-2=16位,其地址格式如下:

主存字块标记(16位) 字块内地址(2位) (5)若存储字长为32位,存储器按字节寻址,则主存容量为256K*32/4=221B,

Cache容量为2K*32/4=214B,块长为4*32/4=32B=25B,字块内地址为5位, 在直接映射方式下,主存字块标记为21-9-5=7位,主存地址格式为:

主存字块标记(7位) Cache字块地址(9位) 字块内地址(5位) 在四路组相联映射方式下,主存字块标记为21-7-5=9位,主存地址格式为: 主存字块标记(9位) 组地址(7位) 字块内地址(5位) 在全相联映射方式下,主存字块标记为21-5=16位,主存地址格式为:

主存字块标记(16位) 字块内地址(5位)

29. 假设CPU执行某段程序时共访问Cache命中4800次,访问主存200次,已知Cache的存取周期为30ns,主存的存取周期为150ns,求Cache的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少倍? 解:Cache被访问命中率为:4800/(4800+200)=24/25=96%

则Cache-主存系统的平均访问时间为: ta=0.96*30ns+(1-0.96)*150ns=34.8ns Cache-主存系统的访问效率为:e=tc/ta*100%=30/34.8*100%=86.2% 性能为原来的150ns/34.8ns=4.31倍,即提高了3.31倍。

30. 一个组相连映射的CACHE由64块组成,每组内包含4块。主存包含4096块,每块由128字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。

解:cache组数:64/4=16 ,Cache容量为:64*128=2字,cache地址13位

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

主存容量为:4096*128=219字,主存地址19位,地址格式如下:

主存字块标记(8位) 组地址(4位) 字块内地址(7位)

31. 设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4,每字32位。试问主存地址为ABCDEH的存储单元在Cache中的什么位置?

解:主存和Cache按字节编址,

Cache容量16KB=214B,地址共格式为14位,分为16KB/(4*32/8B)=210块,每块4*32/8=16B=24B,Cache地址格式为:

Cache字块地址(10位) 字块内地址(4位) 13

主存容量1MB=220B,地址共格式为20位,分为1MB/(4*32/8B)=216块,每块24B,采用直接映射方式,主存字块标记为20-14=6位,主存地址格式为:

主存字块标记(6位) Cache字块地址(10位) 字块内地址(4位) 主存地址为ABCDEH=1010 1011 1100 1101 1110B,主存字块标记为101010,Cache字

块地址为11 1100 1101,字块内地址为1110,故该主存单元应映射到Cache的101010块的第1110字节,即第42块第14字节位置。或者在Cache的第11 1100 1101 1110=3CDEH字节位置。

32. 设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内共有4个字块)的Cache组织。

(1)画出主存地址字段中各段的位数。

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

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

CPU机器周期末查询及响应DMA请求的方案(通常安排CPU机器周期=MM存取周期)。

33. 试从下面七个方面比较程序查询、程序中断和DMA三种方式的综合性能。

(1)数据传送依赖软件还是硬件。 (2)传送数据的基本单位。

(3)并行性。 (4)主动性。 (5)传输速度。 (6)经济性。 (7)应用对象。 解:比较如下:

(1)程序查询、程序中断方式的数据传送主要依赖软件,DMA主要依赖硬件。 (注意:这里指主要的趋势)

(2)程序查询、程序中断传送数据的基本单位为字或字节,DMA为数据块。

(3)程序查询方式传送时,CPU与I/O设备串行工作;程序中断方式时,CPU与I/O设备并行工作,现行程序与I/O传送串行进行;DMA方式时,CPU与I/O设备并行工作,现行程序与I/O传送并行进行。

(4)程序查询方式时,CPU主动查询I/O设备状态;程序中断及DMA方式时,CPU被动接受I/O中断请求或DMA请求。

(5)程序中断方式由于软件额外开销时间比较大,因此传输速度最慢;程序查询方式软件额外开销时间基本没有,因此传输速度比中断快;DMA方式基本由硬件实现传送,因此速度最快;

注意:程序中断方式虽然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的操作方式看。 补充题:

一、某CRT显示器可显示64种ASCII字符,每帧可显示72字×24排;每个字符字形采用7×8点阵,即横向7点,字间间隔1点,纵向8点,排间间隔6点;帧频50Hz,采取逐行扫描方式。假设不考虑屏幕四边的失真问题,且行回扫和帧回扫均占扫描时间的20%,问: 1)显存容量至少有多大?

2)字符发生器(ROM)容量至少有多大? 3)显存中存放的是那种信息?

4)显存地址与屏幕显示位置如何对应?

5)设置哪些计数器以控制显存访问与屏幕扫描之间的同步?它们的模各是多少? 6)点时钟频率为多少?

解:1)显存最小容量=72×24×8 =1728B

2)ROM最小容量=64×8行×8列= 512B(含字间隔1点)

3)显存中存放的是ASCII码信息。

4)显存每个地址对应一个字符显示位置,显示位置自左至右,从上到下,分别对应缓存地址由低到高。

5)设置点计数器、字计数器、行计数器、排计数器控制显存访问与屏幕扫描之间的同步。

它们的模计算如下:

点计数器模 = 7+1 = 8 行计数器模 = 8 + 6 = 14

字、排计数器的模不仅与扫描正程时间有关,而且与扫描逆程时间有关,因此计算较为复杂。

列方程: (72+x)× 0.8 = 72 (24+y)× 0.8 = 24

解方程得:x = 18,y = 6,则: 字计数器模 = 72 + 18 = 90 排计数器模 = 24 + 6 = 30

6)点频 = 50Hz × 30排 × 14行 × 90字 × 8点 = 15 120 000Hz= 15.12MHz

二、有一编码键盘,其键阵列为8行×16列,分别对应128种ASCII码字符,采用硬件扫描方式确认按键信号,问:

1)扫描计数器应为多少位?

2)ROM容量为多大?

3)若行、列号均从0开始编排,则当第5行第7列的键表示字母“F”时,CPU从键盘读入的二进制编码应为多少(设采用奇校验)?

4)参考教材图5.15,画出该键盘的原理性逻辑框图; 5)如果不考虑校验技术,此时ROM是否可省? 解:1)扫描计数器 = 7位(与键的个数有关)

2)ROM容量 = 128 × 8 = 128B(与字符集大小有关) 3)CPU从键盘读入的应为字符“F”的ASCII码 = 01000110 (46H) ,其中最高位为奇校验位(注:不是位置码)。

4)该键盘的原理性逻辑框图见下页,与教材图5.15类似,主要需标明参数。

5)如果不考虑校验技术,并按ASCII码位序设计键阵列(注意) ,则ROM编码表可省,此时7位计数器输出值(扫描码或键位置码)即为ASCII码。 该键盘的原理性逻辑框图如下:

三、一针式打印机采用7列×9行点阵打印字符,每行可打印132个字符,共有96种可打印字符,用带偶校验位的ASCII码表示。问:

1)打印缓存容量至少有多大? 2)字符发生器容量至少有多大? 3)列计数器应有多少位?

4)缓存地址计数器应有多少位?

解:1)打印缓存最小容量 = 132×8= 132B(考虑偶校验位)

2)ROM最小容量 = 96×7列×9行= 672×9位 3)列计数器 = 3位(7列向上取2的幂)

4)缓存地址计数器 = 8位(132向上取2的幂)

讨论:

1.由于针打是按列打印,所以ROM一个存储单元中存一列的9个点,则容量为672×9位; 2.列计数器是对列号进行计数,所以模=7,3位(模不等于位数); 3.同样缓存地址计数器模=132,8位。

第6章 计算机的运算方法

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

(2)X? (3)

14?X?116

?1218

解: (1)若要X,只要a1=1,a2~a6不全为0即可。

(2)若要X?,只要a1~a3不全为0即可。 (3)若要

14?X?116,只要a1=0,a2可任取0或1;

当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0;

若a3=1,则a4~a6可任取0或1;

当a2=1时, a3~a6均取0。

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

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

真值 二进制 原码 补码 反码 -13/64 -0.001101 1.001 1010 1.1100110 1.1100101 29/128 0.0011101 0.001 1101 0.001 1101 0.001 1101 100 1100100 0110 0100 0110 0100 0110 0100 -87 -1010111 1101 0111 10101001 10101000

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的对应关系如下: [x]补 1.1100 [x]原 1.0100 x 1.1001 0.1110 1.0000 1,0101 1,1100 0,0111 1,0000 1.0111 0.1110 0.1110 无 -1 1,1011 1,0100 0,0111 -1011 -100 无 0,0111 -10000 -0.0100 -0.0111 6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,[x]补=[x]原成立。

解:当x为小数时,若x? 0,则 [x]补=[x]原成立;

若x < 0,当x= -1/2时,[x]补=[x]原=1.100 0000,则 [x]补=[x]原

成立。

当x为整数时,若x?0,则 [x]补=[x]原成立;

若x< 0,当x= -64时,[x]补=[x]原=1,100 0000,则 [x]补=[x]原成立。

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

解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。原因如下:

(1)当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补=[-x]

不成立;

(2)当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时成立。

由于正数补码的符号位为0,负数补码的符号位为1,当x>0、 y<0时,有x>y,但则[x]补<[y]补;同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。

9. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)? 解:真值和机器数的对应关系如下:

9BH 对应十进制数 FFH 对应十进制数 原码 -27 原码 -128 补码 -101 补码 -1 反码 -100 反码 -0 移码 +27 移码 +128 无符号数 155 无符号数 256

10. 在整数定点机中,设机器数采用1位符号位,写出±0的原码、补码、反码和移码,得出什么结论?

解:0的机器数形式如下:(假定机器数共8位,含1位符号位在内)

真值 +0 -0 原码 0 000 0000 1 000 0000 补码 0 000 0000 0 000 0000 反码 0 000 0000 1 111 1111 移码 1 000 0000 1 000 0000 结论:0的原码和反码分别有+0和-0两种形式,补码和移码只有一种形式,且补码和移码数值位相同,符号位相反。

11. 已知机器数字长为4位(含1位符号位),写出整数定点机和小数定点机中原码、补码和反码的全部形式,并注明其对应的十进制真值。

原码 0,000 0,001 0,010 0,011 0,100 0,101 0,110 整数定点机 补码 反码 0,000 0,001 0,010 0,011 0,100 0,101 0,110 0,000 0,001 0,010 0,011 0,100 0,101 0,110 真值 +0 1 2 3 4 5 6 原码 0.000 0.001 0.010 0.011 0.100 0.101 0.110 小数定点机 补码 反码 0.000 0.001 0.010 0.011 0.100 0.101 0.110 0.000 0.001 0.010 0.011 0.100 0.101 0.110 真值 +0 0.125 0.250 0.375 0.500 0.625 0.750

0,111 1,000 1,001 1,010 1,011 1,100 1,101 1,110 1,111 无 0,111 0,000 1,111 1,110 1,101 1,100 1,011 1,010 1,001 1,000 0,111 1,111 1,110 1,101 1,100 1,011 1,010 1,001 1,000 无 7 -0 -1 -2 -3 -4 -5 -6 -7 -8 0.111 1.000 1.001 1.010 1.011 1.100 1.101 1.110 1.111 无 0.111 0.000 1.111 1.110 1.101 1.100 1.011 1.010 1.001 1.000 0.111 1.111 1.110 1.101 1.100 1.011 1.010 1.001 1.000 无 0.875 -0 -0.125 -0.250 -0.375 -0.500 -0.625 -0.750 -0.875 -1

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

(1)阶码和尾数均为原码。

(2)阶码和尾数均为补码。

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

阶符1位 阶码4位 数符1位 尾数10位 -1 将十进制数转换为二进制:x1= 51/128= 0.0110011B= 2 * 0.110 011B x2= -27/1024= -0.0000011011B = 2-5*(-0.11011B)

x3=7.375=111.011B=2*0.111011B

x4=-86.5=-1010110.1B=27*(-0.10101101B)

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

(1)[x1]浮=1,0001;0.110 011 000 0 [x2]浮=1,0101;1.110 110 000 0 [x3]浮=0,0011;0.111 011 000 0 [x4]浮=0,0111;1.101 011 010 0 (2)[x1]浮=1,1111;0.110 011 000 0 [x2]浮=1,1011;1.001 010 000 0 [x3]浮=0,0011;0.111 011 000 0 [x4]浮=0,0111;1.010 100 110 0 (3)[x1]浮=0,1111;0.110 011 000 0 [x2]浮=0,1011;1.001 010 000 0 [x3]浮=1,0011;0.111 011 000 0 [x4]浮=1,0111;1.010 100 110 0

13. 浮点数格式同上题,当阶码基值分别取2和16时: (1)说明2和16在浮点数中如何表示。 (2)基值不同对浮点数什么有影响?

(3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。 解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。

(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,

3

基越大,可表示的浮点数范围越大,但浮点数精度越低。

(3)r=2时,

最大正数的浮点格式为:0,1111;0.111 111 111 1

15-10

其真值为:N+max=2×(1-2)

非零最小规格化正数浮点格式为:1,0000;0.100 000 000 0

其真值为:N+min=2×2=2

r=16时,

最大正数的浮点格式为:0,1111;0.1111 1111 11

15-10

其真值为:N+max=16×(1-2)

非零最小规格化正数浮点格式为:1,0000;0.0001 0000 00

其真值为:N+min=16×16=16

14. 设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取1位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么? 解:若要保证数的最大精度,应取阶码的基值=2。

若要表示±6万间的十进制数,由于32768(215)< 6万 <65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。 故:尾数位数=32-1-1-5=25位

25(32) 该浮点数格式如下:

阶符(1位) 阶码(5位) 数符(1位) 5-16

-1

-17

-16

-1

-17

尾数(25位) 按此格式,该浮点数上溢的条件为:阶码?2

15. 什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式?

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

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

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

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

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

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

无符号小数:0 ~ 1 - 2-16 ,即:0 ~ 0.99998; (2)原码定点小数:-1 + 2-15~1 - 2-15 ,即:-0.99997~0.99997

(3)补码定点小数:- 1~1 - 2 ,即:-1~0.99997

(4)补码定点整数:-2~2 - 1 ,即:-32768~32767 (5)原码定点整数:-215 + 1~215 - 1,即:-32767~32767

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

-9-31

最小正数= 1,11 111;0.000 000 001,即 2?2 则正数表示范围为:2-9?2-31 ——(1-2-9)?231

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

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

-1

-32

31-1

-32-9

31

-9

31

15

15

-15

——(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

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]原=0.110111,[y]原=1.101110,x*=0.110111, y*=0.101110 原码一位乘:

部分积 0.000 000 +0.000 000 0.000 000 0.000 000 +0.110 111 0.110 111 0.011 011 +0.110 111 1.010 010 0.101 001 +0.110 111 1.100 000 0.110 000 +0.000 000 0.110 000 0.011 000 +0.110 111 1.001 111 乘数y* 101 110 010 111 101 011 010 101 001 010 000 101 说明 部分积初值为0,乘数为0加0 右移一位 乘数为1,加上x* 右移一位 乘数为1,加上x* 右移一位 乘数为1,加上x* 右移一位 乘数为0,加上0 右移一位 乘数为1,加上x* 右移一位 0.100 111 100 010 即x*×y*=0.100 111 100 010,z0=x0? y0=0 ?1=1, [x×y]原=1.100 111 100 010,x·y= -0. 100 111 100 010 原码两位乘:[-x*]补=1.001 001,2x*=1.101 110

部分积 乘数y* Cj 0 说明 部分积初值为0,Cj=0 根据yn-1ynCj=100,加2x*,保持Cj=0 000 . 000 00 101 110 000

+001 . 101 110 001 . 101 0 0 1 1 右移2位 根据yn-1ynCj=110,加[-x*]补,置Cj=1 右移2位 根据yn-1ynCj=101,加[-x*]补,置Cj=1 右移2位 根据yn-1ynCj=001,加x*,保持Cj=0 110 000 . 011 10 001 011 011 10 001 011 +111 . 001 001 111 . 100 100 111 . 111 001 00 100 010 +111 . 001 001 111 . 000 010 111 . 110 000 10 001 000 +000 . 110 111 000 . 100 111 10 001 0 即x*×y*=0.100 111 100 010,z0=x0? y0=0 ?1=1, [x×y]原=1.100 111 100 010,x·y= -0. 100 111 100 010

补码一位乘:[x]补=0.110111,[-x]补=1.001001,[y]补=1.010010

部分积 乘数 Yn+1 00 . 000 000 1 010 010 0 00 . 000 000 0 101 001 +11 . 001 001 11 . 001 001 +00 . 110 111 00 . 011 011 0 0 1 0 00 . 001 101 1 101 010 00 . 000 110 1 110 101 +11 . 001 001 11 . 001 111 11 . 100 111 1 111 010 +00 . 110 111 00 . 011 110 +11 . 001 001 11 . 011 000 0 111 10 11 . 100 100 1 010 100 0 1 说明 Ynyn+1=00,部分积右移1位 Ynyn+1=10,部分积加[-x]补 右移1位 Ynyn+1=01,部分积加[x]补 右移1位 Ynyn+1=00,部分积右移1位 Ynyn+1=10,部分积加[-x]补 右移1位 Ynyn+1=01,部分积加[x]补 右移1位 Ynyn+1=10,部分积加[-x]补 00 . 001 111 0 111 101 即 [x×y]补=1.011 000 011 110,x·y= -0.100 111 100 010 补码两位乘:

2[x]补=001.101110,2[-x]补=1.001001

部分积 乘数 Yn+1

说明 结果同补码一位乘, x·y= -0. 100 111 100 010 00

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=0 ?y0=0 ?0.101 011 [-y*]补=[-y]补=1.010 101 q0=x0 y]原=0.111 010 r*=0.000 010×2-6=0.000 000 000 010 ?y*=[x?y=x*?x 计算过程如下: 原码加减交替除法: 被除数(余数) 商 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 1 . 1 1 1 0 0 0 0 . + 0 . 1 0 1 0 1 1 ?0 1 r< 1 . 0 0 0 1 1 0 ?0,+y* 0 . 1 0 0 0 1 1 1 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

0 .?续: 被除数(余数) 商 1 0 1 0 1 1 0 0 . 1 1 1 + 1 . 0 1 0 1 0 1 r>0, 1 . 0 1 0 1 1 0 0.1 1 1 0 ?+[-y*]补 1 . 1 0 1 0 1 1 1 + 0 . 1 0 1 0 1 1 r< 0 . 0 0?0,+y* 0 . 0 0 0 0 0 1 1 0 0 1 0 0.1 1 1 0 1 + 1 . 0 1 0 1 0 1 r>0, 0.1 1 1 0 1 0 + 0 . 1 0 1 0 1 1 ?+[-y*]补 1 . 0 1 0 1 1 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 1 . 1 1 1 0 0 0 ?1 试减,x、y同号,+[-y]补 1 1 . 1 1 1 1 0 0 1 0 . + 0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 0 1 . 0 0 0 1 1 0 0.1 + 1 1 . 0 1?. 1 0 0 0 1 1 1 0 0 . 1 1 0?0 1 0 1 r、y同号, +[-y]补 0 0 . 0 1 1 0 1 1 1 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

0 0 . 0 1 0 ?续: 被除数(余数) 商 1 1 1 0 0 . 1 1 1 + 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 1 1 . 0 1 0 1 1 0 0.1 1 1 0 + ? 1 1 . 1 0 1 0 1 1 1 0 0 . 0?0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 . 0 0 0 0 0 1 1 0 0 0 1 0 0.1 1 1 0 1 + 1 1 . 0 1 0 1 0 1 r、y同号, 0.1 1 1 0 1 1 —— 恒置1 + 0 0 . 1 0 1 ?+[-y]补 1 1 . 0 1 0 1 1 1 1 0 1 1 r、x异号,(恢复余数) 0 0 . 0 0 0 0 1 0 且r、y异号, +[y]补 y]补= 0.111 011 [r6]补=0.000 010,r=r*=0.000 000 000 010?y=[x?注:恒置1引入误差。 x

(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 y?y]原=1.110 00 x?y*= 0.110 00 [x? 0 = 1 x*? y0 = 1 ? q0 = x0 = -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 . 1 1 1 1 0 0.1 ?0,+y* 0 . 0 1 1 1 1 1 + 1 . 0 0 1 0 1 r> 0 . 0 0?0, +[-y*]补 0 . 0 0 0 1 1 1 1 1 0 0.1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 1 . 0 1 0 1 1

0 . 1 0 1 1 0 ?续: 被除数(余数) 商 1 0 . 1 1 0 + 0 . 1 1 0 1 1 r<0, +y* 1 . 1 0 0 0 1 . 0 0 0 1 0 0.1 1 0 0 + 0 . 1 1 0 1 1 ?1 1 r< 0.1 1 0 0 0 + 0 . 1 1 0 1 1 ?0,+y* 1 . 1 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 0 0 . 0 1 1 0 0 ? 试减,x、y异号,+[y]补 0 0 . 0 0 1 1 0 1 1 . + 1 1 . 0 0 1 0 1 r、y同号,+[-y]补 1 1 . 1 0 0 0 1 1 . 0 0 0 1 0 1.0 + 0 0 . 1 1 0 1 1 ?1 1 1 1 . 1 1 0 1 0 ? r、y异号, +[y]补 1 1 . 1 1 1 0 1 1 1.0 0 + 0 0 . 1 1 0 1 1 r、y异号, +[y]补 0 0 . 1 0 1 0 1 0 1 . 0 1 0 1 0 1 . 0 0 1?续: 被除数(余数) 商 1 0 0? + 1 1 . 0 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 1 1 1 1 1 . 1 1 1 1 0 1.0 0 1 1 + 1 1 . 0 0 1 0 1 1.0 0 1 1 1 —— 恒置1 + 1 1 . 0 0?r、y同号,+[-y]补 0 0 . 0 0 0 1 1 1 1 0 1 r、x异号,(恢复余数) 1 1 . 0 1 0 0 0 且r、y同号,+[-y]补 y=?y]补=1.001 11,x?注:恒置1引入误差。 [r5]补=1.010 00, r= -0.000 001 100 0 [x -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*= 1.001 01 —— 溢出 ? 1 = 1 x*? y0 = 0 ? [-y]补= 0.100 01 q0 = x0 y = -1.001 01 r*=0.010 11×2-5 =0.000?y]原:无定义 x? [x 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 . 0 0 1 1 0 1?0 1 1 1 . + 1 . 0 1 1 1 1 r>0, +[-y*]补 1 . 1 0 1 0 1 1 . 0 1 0 1 0 1.0 + 0 . 1 0? 1 0 0 1 r< 1 . 1 0 1 1 0 ?0, +y* 1 . 1 1 0 1 1 1 1.0 0 + 0 . 1 0 0 0 1 r<0, +y* 0 . 0 0 1 1 1 0 . 0 1 1 1 0 1 . 0 0 1 ?续: 被除数(余数) 商 1 + 1 . 0 1 1 1 1 r> 1 . 1 1?0, +[-y*]补 1 . 1 1 1 0 1 1 0 1 0 1.0 0 1 0 + 0 . 1 0 0 0 1 r<0,+y* 1.0 0 1 0 1 r?0 . 0 1 0 1 1 1>0,

结束 注:当x*>y*时产生溢出,这种情况在第一步运算后判断r的正负时就可发现。此时数值位占领小数点左边的1位,原码无定义,但算法本身仍可正常运行。 补码加减交替除法: 被除数(余数) 商 0 0 . 1 0 1 0 0 0 . 0 0 0 0 0 + 1 0 0 . 0 0 1 ?1 . 0 1 1 1 1 试减,x、y异号,+[y]补 0 0 . 0 0 0 1 1 1 1 0 0 . + 1 1 . 0 1 1 1 1 r、y异号,+[y]补 1 1 . 0 1 0 1 0 0.1 + 0 0 .? 1 1 . 1 0 1 0 1 1 1 1 . 1 0 1?1 0 0 0 1 r、y同号, +[-y]补 1 1 . 1 1 0 1 1 1 1 0 0.1 1 + 0 0 . 1 0 0 0 1 r、y同号, +[-y]补 0 0 . 0 0 1 1 1

0 0 . 0 1 1 1 0 ?续: 被除数(余数) 商 1 0 . 1 1 0 + 1 1 . 0 1 1 1 1 r、y异号, +[y]补 1 1 . 1 1 . 1 1 0 1 0 0.1 1 0 1 + 0 0 . 1 0 0 0?1 1 1 0 1 1 0.1 1 0 1 1 —— 恒置1 ?1 r、y同号,+[-y]补 0 0 . 0 1 0 1 1 1 r、x同号,结束 [r5]补=0.010 11,r=r*=0.000 000 101 1 ?y= -1.001 01 判溢出:qf ?y]补=10.110 11,x? 1 = 1 [x? y0 = 0 ?真符位的产生:qf = x0 0 = 1,溢出?q0 = 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.011 11 ? 1 = 1 x*? y0 = 0 ?[-y]补= 0.110 11 q0 = x0 y =(-0.011 11)2 = -15/32 r*=0.010 11×2-5 ?y]原=1.011 11 x?[x =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 0 1 0 0 0 .? 1 0 1 + 0 . 1 1 0 1 1 r<0, +y* 1 . 1 1 1 1 1 1 . 1 1 1 1 0 0.0 + 0 . 1 1 0 1? 1 1 r< 1 . 1 0 0 1 0 ?0, +y* 0 . 1 1 0 0 1 1 0.0 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0 . 1 0 1 1 1

1 . 0 1 1 1 0 0 . 0 1 1 ?续: 被除数(余数) 商 1 + 1 . 0 0 1 0 1 r> 1 . 0 0?0, +[-y*]补 0 . 1 0 0 1 1 1 1 1 0 0.0 1 1 1 + 1 . 0 0 1 0 1 r>0, +[-y*]补 0.0 1 1 1 1 r? 0 . 0 1 0 1 1 1>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 1 1 . 1 1 1 1 0 ? r、y同号,+[-y]补 1 1 . 1 1 1 1 1 1 1.1 + 0 0 . 1 1 0 1 1 r、y同号,+[-y]

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

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

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

-011-011101

× 0.101 100,y=2

-010

×(-0.011 100);

-010

×(-0.100 010),y=2×(-0.011 111);

(3)x=2×(-0.100 101),y=2×(-0.001 111)。

解:先将x、y转换成机器数形式:

(1)x=2-011× 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×(-0.110 000) x-y =2-010×0.110 010

(2)x=2-011×(-0.100010),y=2-010×(-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)

-101

100

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

Top