2018年计算机组成原理考研真题与典型题详解(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-19 15:53:01

点击下载

作者:圣才电子书

出版社:圣才电子书

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

2018年计算机组成原理考研真题与典型题详解

2018年计算机组成原理考研真题与典型题详解试读:

第1章 计算机系统概述

1.1 知识要点总结

一、计算机发展历程,层次结构

1.计算机发展历程(1)从计算机问世到现在,计算机一共发展了四代。

第一代为电子管计算机,采用电子管作为逻辑元件,使用机器语言编程,主存用延迟线或磁鼓,运行速度慢,每秒几千到几万次。

第二代为晶体管计算机,采用晶体管作为逻辑元件,开始出现高级程序语言,并且出现了操作系统的萌芽,主存使用磁芯存储器,速度提升到每秒几万到几十万次。

第三代为中小规模集成电路,采用中小规模集成电路作为逻辑元件,高级语言发展迅速,出现分时操作系统,半导体存储器出现取代磁芯,运行速度进一步提高。

第四代为超大规模集成电路时代,采用超大规模集成电路作为逻辑元件,产生了微处理器,并行流水线,虚拟存储器,高速缓存等。(2)摩尔定理:当价格不变时,集成电路板上的晶体管数目,约18个月便会增加一倍,性能提升一倍。(3)计算机分类:电子模拟计算机和数字计算机。数字计算机分为通用机与专用机。(4)计算机发展趋势:往两极化发展,微型计算机,更微型化,网络化,高性能多用途。巨型机则更加巨型化,超高速,并行处理,智能化发展。

2.计算机系统层次结构(1)早期的冯诺伊曼机

硬件系统由运算器,存储器,控制器,以及输入设备,输出设备构成。

图1-1  典型的冯诺依曼计算机结构

在冯诺依曼结构体系中将运算器作为核心,以“存储程序”的基本思想设计。将程序输入到计算机中,存储在内存中,执行时从存储器上一条一条的取出指令,执行指令。在早期的冯诺依曼体系中,控制器控制其他几个部件,运算器可以与存储器,输入设备,输出设备进行数据交换。(2)现代计算机体系结构

现代计算机的基本设计思想未变,还是遵循冯诺依曼的存储程序的思想,但是由于电子技术进步,加工信息增大,使用运算器作为核心不适用,现代计算器一般以存储器为核心。

图1-2  现代计算机组织结构图(3)计算机的功能部件

计算机虽然发展很快,但是主要的功能部件并未发生改变,他们包括:

①输入设备

输入设备的主要功能是将数据以机器所能识别和接受的信息形式输入到计算机。最常用的输入设备是键盘,鼠标、扫描仪等。

②输出设备

输出设备的任务是将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。常用的输出设备有显示器,打印机等。

③存储器

存储器是计算机的存储部件,用来存放程序和数据。

存储器依据其能否直接与CPU进行数据交换分为主存储器(简称主存,也称内存储器)和辅助存储器(简称辅存,也称外存储器)。主存储器主要与CPU进行信息交换,其所保存的信息断电即失。辅助存储器用于帮助主存储器记忆更多的信息,其中的信息可以长期保存,但辅助存储器中的信息必须调入主存后,才能被CPU所访问。

主存储器的按地址存取方式进行工作。基本组成结构如图l-3所示。存储体存放二进制信息,地址寄存器(MAR)存放地址,经过地址译码后找到所选的存储单元。数据寄存器(MDR)用于暂存要从存储器中读或者写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。

图1-3  存储器逻辑图

地址寄存器的位数可以表示存储器的大小,数据寄存器的位数与存储体的字长一致。

在计算机中下面几个关于字长的概念容易混淆

a.机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。

b.指令字长:指令字中包含二进制代码的位数。

c.存储字长:一个存储单元存储二进制代码的长度,必须是字节的整数倍。

指令字长一般都取存储字长的整数倍,如果指令字长等于存储字长的2倍,就需要2次访存来取出一条指令。

④运算器

运算器是计算机进行数据加工处理的部件,用于完成算术运算和逻辑运算。算术运算包括加、减、乘、除等,逻辑运算包括与、或、非、移位等运算。

⑤控制器

控制器又叫中央处理器(CPU)是计算机的指挥中心,由其指挥各部件协调地进行工作。控制器包括程序计数器(PC)、指令寄存器(IR)、控制单元(CU)等几部分。(4)计算机软件层次:

计算机软件主要分为:系统软件与应用软件。

①系统软件:保证计算机系统高效、正确运行的基础软件。通常作为系统资源提供给用户。常见的系统软件有操作系统,数据库管理系统等。

②应用软件:为解决实际应用问题而编写的程序,应用软件种类繁多,如游戏、社交软件等。(5)计算机语言

计算机语言也可以分为三个层次:

①机器语言:二进制代码语言,是计算机唯一可以直接识别和执行的语言,编程极不方便,需要程序员记忆很多二进制指令。

②汇编语言:一种低级语言,用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。汇编语言的程序经过汇编程序软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。

③高级语言:一种近似于自然语言的计算机编程语言,在汇编语言的基础上发展而来,常见的有C,C++,Java等。通常高级语言编写的程序需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或者直接由高级语言程序翻译成机器语言程序。

翻译程序是指把高级语言源程序翻译成机器语言程序的计算机程序。翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只要执行目标程序,因此,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是一种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。【例】计算机系统采用层次化结构组成系统,从最上层的最终用户到最低层的计算机硬件,其层次化构成为(  )。

A.高级语言机器-操作系统机器-汇编语言机器-机器语言机器-微指令系统

B.高级语言机器-汇编语言机器-机器语言机器-操作系统机器-微指令系统

C.高级语言机器-汇编语言机器-操作系统机器-机器语言机器-微指令系统

D.高级语言机器-汇编语言机器-操作系统机器-微指令系统-机器语言机器【答案】D【解析】本题考查对多级层次结构计算机系统的理解,如图所示:

图1-4  层次化构成

二、计算机性能指标

1.机器字长或机器字数

指计算机进行一次整数运算所能处理的二进制数据的位数。机器字长一般等于内部寄存器的位数,字长越长,数的表示范围越大,计算精度就越高。计算机字长通常都选定为字节(Byte,8位)的整数倍。不同的计算机,字长可以不相同。

2.数据通路带宽

指数据总线一次所能并行传送信息的位数。这里所说的数据通路宽度是外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。

3.主存容量

指主存储器所能存储信息的最大容量,通常以字节来衡量,也可以用字数×字长(如512KXl6位)来表示存储容量。其中,MAR的位数反映了存储单元的个数,MAR的位数反映了可寻址范围的最大值,可能比实际存储器的存储容量大。

4.运算速度(1)吞吐量和响应时间

①吞吐量:指系统在单位时间内处理请求的数量。它取决于信息输入内存的速度,CPU取指令的速度,数据从内存取出或存入的速度,以及所得结果从内存送给一台外部设备的速度。这些步骤与主存密切相关,因此,系统吞吐量主要取决于主存的存取周期。

②响应时间:指从用户向计算机发送一个请求,到系统对该请求给出结果的等待时间。通常包括CPU的执行时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。(2)主频和CPU时钟周期

①CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要一个时钟周期。

②主频(CPU时钟频率):机器内部主时钟的频率,它是衡量机器速度的重要参数。主频的倒数是CPU时钟周期。主频越高,完成指令的一个执行步骤所用的时问越短,执行指令的速度越快。(3)CPI(ClockcyclePerInstruction)

CPI即执行每条指令所需的时钟周期数,由于各个指令情况不一,故CPI一般为平均值。(4)CPU执行时间,指运行一个程序所花费的时间。

CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频

上式表明,CPU的性能(CPU执行时间)取决于三个要素:a.主频(时钟频率);b.每条指令执行所用的时钟周期数(CPI);c.指令条数。(5)MIPS、MFLOPS、GFLOPS和TFLOPS

①MIPS(MillionInstructionsPerSecond),即每秒执行多少百万条指令。MIPS=指令条数÷(执行时间×)=主频÷CPI

②MFLOPS(MegaFloating-pointOperationsPerSecond),即每秒执行多少百万次浮点运算。MFLOPS-浮点操作次数÷(执行时间×)。

③GFLOPS(G

④TFLOPS(TeraFloating-pointOperationsPerSecond),即每秒执行多少万亿次浮点运算。MFLOPS=浮点操作次数÷(执行时间×)。【例】MIPS(每秒百万次指令数)和MFLOPS(每秒百万次浮点运算数)是衡量CPU性能的两个指标,其中(   )。

A.MIPS适合衡量向量处理机的性能,MFLOPS适合衡量标量处理机的性能

B.MIPS适合衡量标量处理机的性能,MFLOPS适合衡量向量处理机的性能

C.MIPS反映计算机系统的峰值性能,MFEOPS反映计算机系统的持续性能

D.MIPS反映计算机系统的持续性能,MFLOPS反映计算机系统的峰值性能【答案】B【解析】MIPS反映的是单位时间内执行定点指令的条数,MLOPS是基于所完成的浮点操作次数而不是指令数。在标量计算机中执行一条指令,一般可得到一个运算结果;而在向量机中,一条向量指令通常要对多个数据元素进行运算,得到多个运算结果。MIPS指标不能准确反映向量集中数据的运算速度。因此,MIPS(每秒百万次指令数)适合衡量标量处理机的性能,MFLOPS(每秒百万次浮点运算数)适合衡量向量处理机的性能。

1.2 考研真题与典型题详解

一、单项选择题

1.计算机硬件能够直接执行的是(   )。[2015年联考真题]

Ⅰ.机器语言程序

Ⅱ.汇编语言程序

Ⅲ.硬件描述语言程序

A.仅Ⅰ

B.仅Ⅰ Ⅱ

C.仅Ⅰ Ⅲ

D.ⅠⅡ Ⅲ【答案】A【解析】机器语言是计算机唯一可以直接执行的语言。汇编语言属于低级语言,但其源程必须要翻译成目标程序成为机器语言程序后才能被直接执行。硬件描述语言是电子系统硬件行为描述、结构描述、数据流描述的语言。

2.用于科学计算的计算机中,标志系统性能的主要参数是(   )。[北京理工大学考研真题]

A.主时钟频率  

B.主存容量  

C.MFLOPS

D.MIPS【答案】C【解析】A和B越大越有利于提高计算机性能,但并不是标志性能的主要参数。不同频率或者主存容量的计算机如果运行不同的程序,高频率或大主存的计算机并不是一定能够获得好的性能。MFLOPS每秒执行百万条浮点指令条数(Million Float Instruction Per Second),它是用来描述计算机浮点性能的,而用于科学计算的计算机主要是看重浮点运算、处理的性能如何,故选C。MIPS是每秒执行百万条指令条数(Million Instruction Per Second),它是用来描述一般的计算机系统性能的,并不同于专用于科学计算的评价标准。

3.程序P在机器M上的执行时间是20秒,编译优化后,P执行的指令数减少到原来的70%,而CPI增加到原来的1.2倍,则P在M上的执行时间是(  )。[2014年联考真题]

A.8.4秒  

B.11.7秒

C.14秒 

D.16.8秒【答案】D【解析】20*0.7*1.2=16.8。

4.某计算机主频为1.2GHz,其指令分为4类,它们在基准程序中所占比例及CPI如下表所示。

该机的MIPS数是(  )。[2013年联考真题]

A.100

B.200

C.400

D.600【答案】C【解析】基准程序的CPI=2*0.5+3*0.2+4*0.1+5*0.2=3。计算机的主频为1.2GHz,为1200MHz,该机器的MIPS为1200/3=400。

5.假定基准程序A在某计算机上的运行时间为l00秒,其中90秒为CPU时间,其余为I/O时间。若CPU速度提高50%,I/O速度不变,则运行基准程序A所耗费的时间是(  )。[2012年联考真题]

A.55秒

B.60秒

C.65秒

D.70秒【答案】D【解析】CPU速度提高50%,即CPU性能提高比为1.5,改进之后的CPU运行时间=90÷1.5=60秒。I/O速度不变,仍维持10秒,所以运行基准程序A所耗费的时间为70秒。

6.现代电子数字计算机中的信息以二进制表示,是因为(  )。

A.信息处理方便  

B.物理器件性能决定

C.运算速度快  

D.节约元件【答案】B【解析】计算机的存储器件和运算器件都是基于二极管的,二极管有两种稳定的状态。所以计算机的逻辑是建立在二进制基础上的。表示信息自然要用二进制。ACD三项,都与此无关。

7.微型计算机的发展以(  )技术为标志。

A.操作系统

B.微处理器

C.磁盘

D.软件【答案】B【解析】微型计算机的发展是以微处理器的技术为标志的。

8.用于科学计算的计算机中,标志系统性能的主要参数是(   )。

A.主时钟频率  

B.主存容量  

C.MFLOPS   

D.MIPS【答案】C【解析】AB两项,所指参数越大越有利于提高系统性能,但是并不是标志性能的主要参数,不同频率或者主存容量的计算机如果运行不同的程序,得到的性能并不一定是高频率或大主存的就一定好。D项,MIPS是每秒执行百万条指令条数,是用来描述一般的计算机系统性能的。MFLOPS(每秒执行百万条浮点指令条数)用来描述计算机浮点性能,而用于科学计算的计算机主要就是看浮点的性能。

9.下列(  )是冯诺依曼机工作方式的基本特点。

A.多指令流单数据流

B.按地址访问并顺序执行指令

C.堆栈操作

D.存储器按内容选择地址【答案】B【解析】A项,是不存在的机器,B项,是对“存储程序”的阐述。C项,与题干无关。D项,是相连存储器的特点。

10.下列说法正确的是(  )。

Ⅰ.在微型计算机的广泛应用中,会计电算化属于科学计算方面的应用

Ⅱ.决定计算机计算精度的主要技术是计算机的字长

Ⅲ.计算机“运算速度”指标的含义是每秒钟能执行多少条操作系统的命令

Ⅳ.利用大规模集成电路技术把计算机的运算部件和控制部件做在一块集成电路芯片上,这样的一块芯片叫单片机

A.Ⅰ、Ⅲ

B.Ⅱ、Ⅳ

C.Ⅱ

D.Ⅰ、Ⅲ、Ⅳ【答案】C【解析】会计电算化属于计算机数据处理方面的应用,Ⅰ错误。Ⅱ显然正确。计算机“运算速度”指标的含义是每秒钟能执行多少条指令,Ⅲ错误。这样集成的芯片称为CPU,IV错误。

二、综合题

1.某计算机的CPU主频为500MHz,CPI为5(即执行每条指令平均需要5个时钟周期)。假定某外设的数据传输率为0.5 MB/s,采用中断方式与主机进行数据传送,以32位为传输单位,对应的中断服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间。请回答下列问题,要求给出计算过程。(1)在中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?(2)当该外设的数据传输率达到5MB/s时,改用DMA方式传送数据。假定每次DMA传送块大小为5000B,且DMA预处理和后处理的总开销为500个时钟周期,则CPU用于该外设I/O时间占整个CPU时间的百分比是多少?(假设DMA与CPU之间没有访存冲突)[2009年联考真题]

答:(1)已知主频为500MHz,则时钟周期=1÷500MHz =2ns,因为CPI=5,所以每条指令平均5×2=10ns。又已知每中断一次传送32位(4个字节),数据传输率为0.5MB/s,所以传送时间=4÷O.5MB/s=8μs。CPU用于该外设I/O共需20条指令(中断服务程序包括18条指令+其他开销折合2条指令),花费时间=20×10=200ns。CPU用于该外设I/O的时间占整个CPU时间的百分比=200/8000×100%=0.025×100%=2.5%。(2)改用DMA方式传送数据,数据传输率为5MB/s,传送5000B的时间=5000B÷5MB/s=1ms。预处理和后处理的总开销时间=500×2ns=1μs。CPU用于该外设I/O时间占整个CPU时间的百分比=预处理和后处理的总开销时间÷传送数据的时间=1/1000×100%=0.001×100%=0.1%。

2.设某机主频为8MHz,每个机器周期平均含2个时钟周期,每条指令平均有2.5个机器周期,试问该机的平均指令执行速度为多少MIPS?若机器主频不变,但每个机器周期平均含4个时钟周期,每条指令平均有5个机器周期,则该机的平均指令执行速度又是多少MIPS?

答:根据主频为8MHz,时钟周期=,机器周期为0.125×2=0.25μs,指令周期为0.25×2.5=0.625μs。(1)平均指令执行速度为1÷0.625=1.6MIPS。(2)若机器主频不变,机器周期含4个时钟周期,每条指令平均含5个机器周期,则指令周期为0.125×4×5=2.5μs,故平均指令执行速度为1÷2.5=0.4MIPS。

3.解释计算机系统的层次结构。

答:应用软件、系统软件和硬件构成了计算机系统的三个层次结构。(1)硬件系统是最内层的,它是整个计算机系统的基础和核心。(2)系统软件在硬件之外,为用户提供一个基本的操作界面。(3)应用软件是在最外层,为用户提供解决具体问题的应用系统界面。

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

第2章 数据表示与运算

2.1 知识要点总结

一、数制以及编码

1.进位计数制及相互转换(1)进位计数制

在进位计数制中,每个数位所用到的不同数码的个数称为基数,每个数码所表示的数值等于该数码本身乘以一个与它所在数位有关的常数,这个常数称为位权。常用进位计数制有二进制,八进制,十进制,十六进制。

①二进制:基数为2的计数制,只有0和1两种数字符号,计数逢i二进一,它的任意数位的权为2,i为所在位数,常用于计算机中。

②八进制:基数为8,有0~7共8个不同的数字符号,计数逢八3进一,因为8=2,所以只要把二进制中的3位数码编为一组就是一位八进制数码,两者之间的转换极为方便。

③十六进制:基数为16,每个数位可取0~9、A、B、C、D、E、F中的任意一个,其中A、B、C、D、E、F分别表示10~15。计数逢十六进一,4位二进制数码与1位十六进制数码相对应。(2)各进制数间相互转换

①二进制转八进制或十六进制

对于一个二进制数,如果其既包含整数部分,又包含小数部分,转换时以小数点为界。其整数部分,从小数点开始往左数,转换为八进制时,三位一组,转换为十六进制时,四位一组,在数的最左边可根据需要加“0”补齐;对于小数部分,从小数点开始往右数,也同样将二进制数分为3位一组(八进制)或4位一组(十六进制),在数的最右边也可根据需要加“0”补齐,然后分别用对应的八进制或十六进制数取代。

②任意进制转为十进制

将任意进制的数各位数码与它们的权值相乘,再把乘积相加,就得到了一个十进制数。

③十进制转为任意进制

整数部分的转换:整数部分除基取余,最先取得的余数作为最低位,最后取得的余数为最高位,商为0时结束。

小数部分的转换:小数部分乘基取整,最先取得的整数为最高位,最后取得的整数为最低位,乘积为0(或满足精度要求)时结束。

转换后,将整数部分与小数部分合并即可得到转换后的数。

2.数据编码(1)数据真值与机器数

①真值:带有正、负号的数。

②机器数:在计算机中将符号与数值一起编码,这种符号数字化的数就成为机器数。真值是机器数所表示的实际值。(2)BCD码

BCD码是指二进制编码的十进制数(BinaryCodedDecimal,BCD)采用4位二进制数来表示一位十进制数中的0~9这10个数码,BCD有以下三种表示形式:

①8421码:它是一种有权码,设其各位的数值为b、b、b、b,3210则权值从高到低依次为8、4、2、1,则它表示的十进制数为D=8b3+4b+2b+1b.210

②余3码:它是一种无权码,是在8421码的基础上加上(0011)形成的,因每个数都多余“3”,故称为余3码。2

③2421码:它也是一种有权码,权值由高到低分别为2、4、2、1,特点是大于等于5的4位二进制数中最高位为1,小于5的最高位为0。(3)字符与字符串的表示

①字符的ASCII码

ASCII美国信息交换标准码,后来被国际上普遍采用,标准ASCII用7位二进制编码,可表示10个十进制数码、52个英文大写和小写字母(A~Z,a~z)以及一定数量的专用符号,共128个字符。其中必须要知道,0~9的ASCII码值为48(0110000)~57(0111001),其低4位,则正好是二进制形式的0~9。还有扩展的ASCII用8位二进制编码,可表示256个字符,前128与标准ASCII相同。

②汉字的表示与编码

由于汉字字数很多,使用ASCII无法满足需要。因此汉字采用其他编码方式,目前我国已经发布了GB2312-80,以及GB18030等国家标准。

汉字的编码包括汉字的输入编码、汉字内码、汉字字形码三种,它们是计算机中用于输入、内部处理和输出三种用途的编码。一般有三种常用输入码:

a.国标区位码:用数字串代表汉字,区位码是国家标准局于1981年颁布的标准,用两个字节表示一个汉字,每个字节用七位码,它将汉字和图形符号排列在一个94行94列的二维代码表中。区码和位码各表示两位十进制数,国标码=(区位码)+2020H汉字16内码=(国标码)+8080H。16

b.拼音码:以汉语拼音作为输入码,容易记忆,缺点重码率高。

c.字形码:将汉语笔画用数字或者字符编码,按一定顺序输入即可得到汉字。

汉字内码:用于计算机存储,处理加工,传输时所用的二进制编码,与ASCII码类似。

汉字字形码:用于显示或者打印输出,常用点阵或矢量表示。

③字符串表示方式

字符串就是连续的一串字符,它们在主存中占用多个连续字节,每个字节存储一个字符。目前主要有两种方式存放字符串:

a.大端模式:按先存储高位字节、后存储低位字节的顺序存放字符串的内容。

b.小端模式:可按先存储低位字节,后存储高位字节的顺序存放字符串的内容。

3.校验码

校验码是指据有发现错误或者指出错误位置的的数据编码方式。其原理是使用冗余编码,来检验或纠正错误。

码距:校验码中,任意两个合法编码之间不同的二进制位数。

对于码距不小于2的数据校验码,开始具有检错的能力。码距越大,检、纠错能力就越强,而且检错能力总是大于或等于纠错能力,与此同时编码效率也越来越低。

常用的校验码有以下三种:(1)奇偶校验码

奇偶效验码,在原数据的尾部加上一位校验码,码距为2,只能检错,不能纠错,只有发生错误的位数为奇数时,它才能检测出来。奇偶校验实现的方法:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码,校验位的取值(0或1)将使整个校验码中。“1”的个数为奇数或偶数,所以有两种可供选择的校验规律。

奇校验码:整个校验码中“1”的个数为奇数。

偶校验码:整个校验码中“1”的个数为偶数。(2)海明码

海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。

推导并使用长度为m位的码字的海明码,所需步骤如下:

①确定最小的校验位数k,将它们记成D1、D2、…、Dk,每个校验位符合不同的奇偶测试规定。

②原有信息和k个校验位一起编成长为m+k位的新码字。选择k校验位(0或1)以满足必要的奇偶条件。

③对所接收的信息作所需的k个奇偶检查。

④如果所有的奇偶检查结果均为正确的,则认为信息无错误。

如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。

下面用一下例子说明海明码的求解过程,假设n=4,k=3

①确定海明码的位数

设n为有效信息的位数,k为校验位的位数,则信息位n和校验位k应满足:k-1

n+k≤23

海明码位数为n+k=7≤2-1成立,则n、k有效。信息位设为DDDD(1010),共4位,校验位PPP,共3位。故其海明码为4321321HHHHHHH7654321。

②确定校验位的分布i-1

规定校验位P在海明位号为2的位置上,其余各位为信息位,i因此i0-1

P的海明位号为2=2=1,即H为P。111i1-1

P的海明位号为2=2=2,即H为P。222i2-1

P的海明位号为2=2=4,即H为P。343

将信息位按原来的顺序插入,则海明码各位的分布如下:

HHHHHHH7654321

DDDPDPP4323121

③分组,以形成校验关系

每个数据位用多个校验位进行校验,但要满足:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。另外,校验位不需要再被校验。由题目要求可知D1由P2P1校验,D2由P3P1校验,D3由P3P2校验,D4由P3P2P1校验。

④校验位取值

校验位P的值为第i组(由该校验位校验的数据位)所有位求异i或。根据3)中的分组有:

所以,1010对应的海明码为1010010。

⑤海明码的校验

每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,就构成了k个校验方程:

若SSS的值为“000”,则说明无错;否则说明出错,而且这321个数就是错误位的位号,如S3S2S1=001,说明第1位出错,即H出1错,直接将该位取反就达到了纠错的目的.(3)循环冗余校验(CRC)码

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

CRC码的生成步骤如下:

①将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数;

②将信息码左移R位,相当与对应的信息多项式C(x)*2R;

③用生成多项式(二进制数)对信息码做模2除,得到R位的余数;

④将余数拼到信息码左移后空出的位置,得到完整的CRC码。

下面使用一个例子来说明,CRC校验码的生成过程。32

设生成多项式为G(x)=x+x+1,信息码为101001,求对应的CRC码。R=生成多项式最高幂次=3,K=信息码长度=6,N=K+R=9。生成多项式G(X)对应的二进制码为1101。

a.移位

将原信息码左移R位,低位补0。得到101001000。

b.相除

对移位后的信息码,用生成多项式进行模2除法,产生余数。模2除法:模2加法和减法的结果相同,都是做异或运算,模2除法和算术除法类似,但每一位除(减)的结果不影响其他位,也就是不借位,步骤如下:

第一,用除数对被除数最高几位做模2减(异或),不借位。

第二,除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。

第三,循环直到余数位数小于除数时,该余数为最终余数。

模2除法,得到的余数为001,则报文101001编码后的报文(即CRC码)为101001001。

c.检错和纠错

接收端收到的CRC码,用生成多项式G(x)做模2除法,若余数为0,则码字无错。

若接收端收的CRC码为CCCCCCCCC=101001011,将987654321这个数据与1101进行模2除法,得到的余数为010,则说明C出错,2将C取反即可。2

二、定点数的表示和运算

1.定点数的表示

在计算机中的数据可以分为有符号数与无符号数:(1)无符号数:整个机器字长的二进制位均为数值位,可表示范围为0~255.(2)有符号数:一般用最高位表示符号位,用0表示正,1表示负,其余位为数值位。(3)定点数:小数点位置固定的数。通常情况下,小数点位置固定在最高位(定点小数),或者小数点位置固定在最低位(定点整数)。

①定点小数

在定点数中,小数点位置固定,表示小数时,小数点固定在最高位,故定点小数为纯小数。数据X的形式为xxx…x其中x为符号位,012n0x~x是数值的有效部分,也称为尾数,x为最高有效位。其所能表1n1--nn示的最大正数为1-2;最小负数为-(1-2)。

②定点整数

定点整数小数点位置在最后,表示纯整数。数据X可表示为如下形式xxx…x其中x为符号位,X~X是尾数,x为最低有效位。012n01nnnn-1X其所能表示的最大正数,真值等于2;其所能表示的最小负数为n-(2-1)。

2.原码,反码,补码,移码(1)原码表示法

原码用最高位表示该数的符号,其余的各位表示数的数值。其定义如下:

纯小数的原码定义:

整数原码定义:-n

对于n+1的原码来说,其小数的表示范围为一(1-2)≤x≤1-nnn-2,整数表示范围为一(2-1)≤z≤2-1,原码数据表示范围关于原点对称。零的原码有正零和负零两种形式:[+0]=00000,原[-0]=10000。原(2)反码表示法

反码:机器数的一种表示形式,最高位为符号位,其余位正数时与原码相同,负数时取反。其定义如下:

纯小数的反码定义: 

整数反码定义:n

对于字长为n+1的反码而言,小数的表示范围为-(1-2)≤x-nnn≤1-2,整数反码的表示范围为-(2-1)≤x≤2-1。0的反码表示方式也有两种:[+0]=0.0000,[-0]=1.1111。反反(3)补码表示法

补码是计算机中广泛使用的一种机器数表现形式,常用于计算机的计算过程中。

纯小数的补码定义:

纯整数的补码定义:-n

对于字长为n+1的补码而言,小数的表示范围为-1≤x≤1-2,nn整数的表示范围为-2≤x≤2-1,0的补码表示是唯一的。即[+0]=[-0]=0.0000。(4)移码表示法

移码(又叫增码)是符号位取反的补码,相当于在真值上加上一个偏置值,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。

移码特点:

①移码中零的表示唯一,[+0]=[-0]=100…0。移移

②一个真值的移码和补码仅差一个符号位。nn

③移码全0时,代表其最小值-2;移码全1时,表示其最大值2-1。

④移码大真值就大,移码小真值就小(5)原码,反码,补码,移码间相互转换

对于整数而言,原码,反码,补码形式均相同。

对于负数,原码是符号位为1,数值部分取X绝对值的二进制。反码是符号位为1,其它位是原码取反。补码是符号位为1,其它位是原码取反,未位加1。也就是说,负数的补码是其反码未位加1。

移码就是将符号位取反的补码。

3.定点数运算(1)定点数移位运算

移位运算包括算术移位与逻辑移位,一般对有符号进行算术移位,逻辑移位一般对无符号数进行。

①算术移位

在算术移位过程中,符号位不变。对于正数,移位后空位补0,负数时,原码,反码,补码的填补方式有所不同。

a.原码移位时,要使符号位不变,其空位均添0。

b.反码移位时,符号位不变,其余空位部添1。

c.补码左移时,空位出现在低位,添0;右移时因空位出现在高位,则添1.

②逻辑移位

逻辑移位将操作数看做无符号数看待,移位规则:无论逻辑左移还是逻辑右移都在空缺位添0。

③循环移位

循环移位分为带进位标志位CF的循环移位(大循环)和不带进位标志位的循环移位(小循环)。不带标志的循环移位过程中,将最高位送到CF中,带进位的循环移位,标志位参与移位。下面给出几种移位的示意图。

图2-1  几种循环移位方式【例】在补码表示的机器中,若寄存器A中原存的数为9EH,现存的数为CFH,则表明执行的一条指令是(  )

A.算术左移

B.逻辑左移

C.算术右移

D.逻辑右移【答案】C【解析】寄存器A中原存内容10011110,现存内容11001111,说明执行了一条算术右移指令。(2)定点数原码加/减法

在进行原码加减运算时规则如下:

①加法规则:先判符号位,若相同,绝对值相加,结果符号位不变;若不同,则做减法,绝对值大的数减去绝对值小的数,结果符号位与绝对值大的数相同。

②减法规则:两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算。

运算时注意机器字长,当左边位出现溢出时,将溢出位丢掉。原码运算在机器不易实现,故在计算机中采用补码进行运算。(3)定点数补码加/减法

补码进行加减运算规则简单,容易实现。进行运算时,首先将数据变为补码形式。其运算原则如下:

①加法:整数[A]补+[B]补=[A+B]补(mod2n+1),小数[A]补+[B]补=[A+B]补(mod2)。

②减法:整数[A-B]补=[A]补+[-B]补(mod2n+1),小数[A-B]补=[A]补+[-B]补(mod2)。

补码运算的结果还是补码。【例】一个C语言程序在一台32位机器上运行。程序中定义了三个变量x、y和z,其中x和z是int型,y为short型。当x=127,y=-9时,执行赋值语句z=x+y后,x、y和z的值分别是(  )。

A.x=0000007FH,y=FFF9H,z=00000076H

B.x=0000007FH,y=FFF9H,z=FFFF0076H

C.x=0000007FH,y=FFF7H,z=FFFF0076H

D.x=0000007FH,y=FFF7H,z=00000076H【答案】D【解析】结合题干及选项可知,int为32位,short为16位;又C语言的整型数据在内存中为补码形式,故x、y的机器数写为十六进制为0000007FH、FFF7H。执行z=x+y时,由于x为int型,y为short型,故需将y的类型强制转换为int,在机器中通过符号位扩展实现,由于y的符号位为1,故在Y的前面添加16个1,即可将y强制转换为int型,其十六进制形式为FFFFFFF7H;然后执行加法,即0000007FH+FFFFFFF7H=00000076H(最高位的进位1自然丢弃)。(4)定点数乘法

①原码一位乘法

原码的一位乘法与进行手工计算的过程相似,将数值计算与符号运算分开,其符号为由两数的符号位异或给出,数值部分由两数绝对值相乘,其基本规则如下:

a.部分积的长度同被乘数,取n+1位,以便存放乘法过程中绝对值大于或等于1的值,初值为0。

b.从乘数的最低位y开始判断:若y=1,则部分积加上被乘数nnx,然后右移一位;若y=0,则部分积加上0,然后右移一位。n

c.重复步骤b,判断n次。

原码一位乘法运算过程中的右移操作均为逻辑右移。

②补码一位乘法

补码一位乘法,首先将两数化为补码形式,符号位直接参与计算,其基本运算规则如下:

a.被乘数与部分积一般取双符号位参与运算,初值为0,乘数可取单符号位。

b.乘数末位增设附加位,且初值为0。

c.根据的取值来确定操作。

表2-1  位移规则

d.移位按补码右移规则进行。

补码算法,对于n位数,要进行n+1次,最后一次不移位。(5)定点数除法

①原码不恢复余数法

原码不恢复余数法:是一种原码常用的除法运算,其特点是,符号运算与数值运算分离,在运算过程中,不用再花费时间恢复负数余数。其基本规则如下:

a.商的符号由除数与被除数的符号异或得到。

b.当余数为正时,商上1,余数和商左移一位,再减去除数。

c.当余数为负时,商上0,余数和商左移一位,再加上除数。

d.最后一步,不够减时,商0,加上除数,恢复余数。

②补码除法运算(加减交替法)

补码一位除法:符号位与数值位一起参加运算。第一步根据被除数和除数的符号决定是做加法还是减法;上商的原则根据余数和除数的符号位共同决定,同号上商“1”,异号上商“0”最后一步商恒置“1”。

加减交替法的规则如下:

a.除数与被除数均用补码表示,商和余数也用补码表示。

b.若被除数与除数同号,被除数减去除数;若被除数与除数异号,被除数加上除数。

c.若余数与除数同号,商上1,余数左移一位减去除数;若余数与除数异号,商上0,余数左移一位加上除数。

d.一般采用“末位恒置1”法,有精度要求另处理。(6)溢出概念以及判断方法

溢出是指数据运算结果超出了数的表示范围,在计算机中才有的概念,因为计算机中数据表示范围有限。一般常用一下几种方式判断数据是否溢出:

①采用单符号位

在计算机中,无论加法还是减法都是采用加法的形式实现,如果参加操作的两个数数符相同,但是结果的操作符与原操作数不同,则发生溢出。

②采用双符号位

在双符号位表示法中两个符号位相同,表示未溢出,两个符号位SS不同,表示溢出,真正的符号有高位表示。主要由以下四种情s1s2况:

a.SS=00:表示结果为正数,无溢出;s1s2

b.SS=01;表示结果正溢出;s1s2

c.SS=10:表示结果负溢出;s1s2

d.SS=11:表示结果为负数,无溢出。s1s2

③用一位符号位以及数据位的进位情况判断溢出

如果符号位的进位C与最高数位的进位C相同,则说明没有溢s1出,否则表示发生溢出。【例】定点原码除法中,每次做被除数(余数)减除数,根据所得差的符号,判断是否够减,差数>0,说明够减,商“1”;差数<0,说明不够减,商“0”;第一位除法所求的商表示(  )。

A.商的符号  

B.商的第1位数值

C.商数溢出与否  

D.无关【答案】C【解析】第一位除法所求的商若为0,则说明不够减,满足|被除数|<|除数|;第一位除法所求的商若为1,则说明够减,不满足|被除数|<|除数|。因此,第一位除法所求的商表示商数的溢出与否。

三、浮点数的表示和运算

1.浮点数的表示

浮点数就是将比例因子以适当的形式表示在数据中,而且小数点的位置可以根据需要进行改变。浮点数的表示方法扩大了数据的表示范围。常用的浮点数表示方法如下:

图2-2  普通浮点数表示法

浮点数表示主要包括两个部分阶码部分与数值部分。阶码由阶符与阶码数值部分组成,数值部分由数符与尾数部分组成。小数点隐含表示,在尾数之前。阶码为整数,与阶符一起反应符点数的表示范围,尾数反应浮点数的精度。(1)浮点数的规格化

浮点数的规格化操作就是调整浮点数的尾数和阶码的大小,浮点数在尾数的最高数位上是一个有效值(浮点数0除外)。一般来说,规格化操作主要有两种:

①左规:当浮点数尾数最高位不为1时要进行规格化处理,将尾数左移一位,阶码减1(基数为2时)的方法称为左规。

②右规:当浮点数尾数出现溢出时,将尾数右移一位,阶码加1(基数为2时),这种方法称为右规。规格化浮点数的尾数M的绝对值应满足:1/r≤|M|≤1(r为基数)。

尾数的基数为2时,原码规格化数的尾数最高位一定是1,补码规格化数的尾数最高位一定与尾数符号位相反。基数不同,浮点数的规格化形式也不同。(2)IEEE754标准

IEEE754标准的常用格式如下:

图2-3  IEEE754浮点数表示法

其中阶符采用隐含表示,阶码用移码表示,尾数用原码表示。有三种常用格式:短浮点型,长浮点型,临时浮点型。其中数符都为1位,短浮点型阶码8位,尾数23位,偏置值为127。长浮点型阶码11位,尾数53位,偏置值1023。临时浮点型,阶码15位,尾数64。

在IEEE754标准中,实际阶码值=E-偏置值。而且对于规格化的二进制浮点数,数值的最高位总是“1”,为了能使尾数多表示一位有效位,将这个“1”隐含,因此尾数数值实际上是24位。隐含的“1”是一位整数。在浮点格式中表示出来的23位尾数是纯小数。规格化的短浮点数的真值为:×1.M×,规格化长浮点数的真值为:×1.M×。

2.浮点数加减运算

浮点数运算时采用补码形式,运算时阶符运算与位数运算分开,先做阶符运算,在进行尾数运算。浮点数运算包括以下几个步骤:(1)对阶

对阶就是使得两个浮点数的阶码相等。为此首先需要求取两数的阶码差M,小阶向大阶看齐,将阶码小的尾数右移M位(基数为2),使得两个数的阶码相等。尾数右移时,舍弃掉有效位会产生误差,影响精度。(2)尾数求和

将对阶后的尾数按定点数加(减)运算规则运算。(3)规格化

规格化分为左规与右规两种:

①左规:当尾数出现最高位符号位相同时,需左规,即尾数左移1位,和的阶码减1,直到尾数的最高位符号位数据不同。

②右规:当尾数求和结果溢出时,需右规,即尾数右移一位,和的阶码加1。(4)舍入处理

在浮点数的对阶和右规的过程中,可能会将尾数低位丢失,此时需要采取一些从处理方法降低精度损失。常见的舍入方法有:

①0舍1入法;在尾数右移时,如果被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。

②恒置1法:尾数右移时,不论丢掉的最高数值位是1还是0,都使右移后的尾数末位恒置1。(5)溢出判断

浮点数的溢出与否是由阶码的符号决定的,尾数溢出浮点数不一定溢出。使用双符号位时,当阶码的符号位为“01”时,即阶码大于最大阶码,表示上溢,此时会引发中断进行处理;当阶码的符号位出现“10”时,即阶码小于最小阶码,表示下溢,按机器零处理,不会引起中断。【例】浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍人和判断溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且7位数分别为5位和7位(均含2位符号位)。若有两个数X=2×29/32,5Y=2×5/8,则用浮点加法计算X+Y的最终结果是(  )。

A.001111100010  

B.001110100010

C.010000010001   

D.发生溢出【答案】D【解析】根据题意,X可记为00,111;00,11101(分号前为阶码,分号后为尾数),Y可记为00,101;00,10100;首先对阶,X、Y阶码相减,即00,111一00,101=00,111+11,011=00,010(最高位进位自然丢弃),可知X的阶码比Y的阶码大2,根据小阶向大阶看齐的原则,将Y的阶码加2,尾数右移2位,得Y为00,111;00,00101;尾数相加,即00,11101+00,00101=01,00010,尾数相加结果符号位为01,故需进行右规;规格化,将尾数右移1位,阶码加1,得X+Y为01,000;O0,10001,阶码符号位为01,说明发生溢出。

四.算术逻辑单元(不是重点)

1.一位全加器

一位全加器实现了两个一位数据的加法,其有加数A被加数B下级进位三个输入,有运算结果S与进位两个输出。其逻辑表达式为:

2.串行加法器

串行加法器只有一个全加器,数据逐位送入加法器中进行运算。如果操作数位长为n,加法就要分n次进行,每次产生一位和,结果串行的送到寄存器中,用触发器来保存进位信号,并参与下一次计算。

3.并行加法器

用n位全加器实现两个n位操作数各位同时相加,这种加法器称谓并行加法器。并行加法器中全加器的位数与操作数的位数相同。并行加法器从相对于串行加法器来说速度提升不少。但是并行加法器在进位传递时会产生时延,并且并行加法器的最长运算时间由此时延决定。

并行加法器有两种常用的进位方式:(1)串行进位

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载