计算机组成原理考研辅导.ppt_第1页
计算机组成原理考研辅导.ppt_第2页
计算机组成原理考研辅导.ppt_第3页
计算机组成原理考研辅导.ppt_第4页
计算机组成原理考研辅导.ppt_第5页
已阅读5页,还剩313页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机组成原理考研辅导,李 光 顺,Email: ,Tel:曲阜师范大学计算机科学学院,计算机组成原理 (第2版) 唐朔飞 计算机组成原理 学习指导与习题解答 唐朔飞计算机组成原理 (第4版) 白中英 计算机组成与结构 (第4版) 王爱英,主要参考教材,【考查目标】 (1) 理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。 (2) 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法。 (3) 能够运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际

2、问题进行计算、分析,并能对一些基本部件进行简单设计。,一 计算机系统概述,(一)计算机发展历程(第一台计算机的诞生,发展史,冯诺依曼机的特点)唐P20 1、 1946年 美国宾夕法尼亚大学研制的 ENIAC是世界上第一台计算机。,2、 电子计算机的发展分四个阶段,第一代计算机(19461957) :电子管为基本元件, 定点数,机器语言和汇编语言 第二代计算机(19581964):晶体管为基本元件, 磁带和磁盘为辅存,体积小,功耗低, fortran等高级语言。 第三代计算机(19651971) :中小规模集成电路为基 本元件,通用化、系列化、标准化,OS日趋成熟。 第四代计算机(1971至今)

3、 :LSI和VLSI为基本元件, 芯片集成度大体上每三年翻两番(摩尔定律)。 芯片性能呈指数增长将在今后几年放缓。,3、 冯诺依曼计算机的基本特点: 由运算器、控制器、存储器、输入设备和输出 设备组成。 (2) 采用存储程序的方式。 (3) 数据以二进制码表示。 (4) 指令由操作码和地址码组成。 (5) 指令在存储器中按执行顺序存放,由PC指明要执行的指令的单元地址,一般按顺序递增。 (6) 机器以运算器为中心。,(二)计算机的层次结构 唐P310 1、 计算机硬件的基本组成 2、 计算机软件的分类 3、 计算机的工作过程,由具有各类特殊功能 的信息(程序)组成,1、 计算机硬件组成,计算机

4、系统,计算机的实体, 如主机、外设等,ALU,主存 辅存,CPU,主机,I/O设备,硬件,CU,计算机硬件组成,按任务需要编制成的各种程序,用来管理整个计算机系统,语言处理程序(汇编和编译),操作系统,服务性程序,数据库管理系统,网络软件,软 件,2、 计算机软件分类,信息管理软件 辅助设计软件 文字处理软件 各种程序包,计算机系统的层次结构,高级语言,虚拟机器 M3,汇编语言,虚拟机器 M2,机器语言,实际机器 M1,微指令系统,微程序机器 M0,用编译程序翻译 成汇编语言程序,用汇编程序翻译 成机器语言程序,用机器语言解释操作系统,用微指令解释机器指令,由硬件直接执行微指令,* 存储元件

5、存储单元 存储体 存储基元 存储元,3、 计算机的工作过程 唐P1315,计算机工作的全过程,输入程序和数据,程序首地址,打印结果,分析指令,取指令,停机,启动运行程序,执行指令,MAR,M,MDR,IR,PC,CU,OP(IR),Ad(IR),MAR,M,MDR,ACC,PC,(三) 计算机性能指标 吞吐量、响应时间;CPU时钟周期、主频、CPI、CPU执行时间;MIPS、MFLOPS。 吞吐量(率):单位时间内 流水线所完成指令 或 输 出结果 的 数量。,机器字长,存储容量,运算速度,* 计算机硬件的主要技术指标,唐 P16,(一)数制与编码,二 数制的表示和运算,1、进位计数制及其相互

6、转换 2、 真值和机器数 3、 BCD码 4、字符与字符串 5、校验码,1、 数制及其转换,1)R进制转换成十进制的方法 按权展开法:先写成多项式,然后计算十进制结果。 N = dn-1dn-2 d1d0d-1d-2 d-m = dn-1 Rn-1 + dn-2 Rn-2 + d1 R1 +d0 R0 + d-1 R-1 + d-2 R-2 + d-m R-m,2)十进制转换成二进制方法,一般分为两个步骤: 整数部分的转换 除2取余法(基数除法) 减权定位法 小数部分的转换 乘2取整法(基数乘法),2 327 余数,2 163 1 整数最低位,2 81 1,2 40 1,2 20 0,2 10

7、 0,2 5 0,2 2 1,2 1 0,0 1 高位,(327)10 =(101000111) 2,除基2取余法(整数部分)除基取余法:把给定的十进制数除以基数,取余数作为最低位的系数,然后继续将商部分除以 基数,余数作为次低位系数,重复操作直至商为 0例如:用基数除法将(327)10转换成二进制数,减权定位法(整数部分),将十进制数依次从二进制的最高位权值进行比较,若够减 则对应位置1,减去该权值后再往下比较,若不够减则对应 位为0,重复操作直至差数为0。 例如:将 (327)10 转换成二进制数 256327512 327-256=71 1 高位 71128 0 71-64 =7 1 7

8、32 0 716 0 78 0 7-4 =3 1 3-2=1 1 1-1=0 1 低位,例如:将(0.8125) 10 转换成二进制小数。 整数部分 2 0.8125=1.625 1 小数点后首位 2 0.625=1.25 1 2 0.25=0.5 0 2 0.5=1 1 低位 (0.8125) 10 =(0.1101) 2,乘基取整法(小数部分的转换) 把给定的十进制小数乘以2,取其整数作为二进制小数的第一位,然后取小数部分继续乘以2,将所的整数部分作为第二位小数,重复操作直至得到所需要的二进制小数,3)二进制、八进制和十六进制之间的转换,二 八 二 十六 000 0 0000 0 1000

9、 8 001 1 0001 1 1001 9 010 2 0010 2 1010 A 011 3 0011 3 1011 B 100 4 0100 4 1100 C 101 5 0101 5 1101 D 110 6 0110 6 1110 E 111 7 0111 7 1111 F 以小数点为界,对小数点前后的数分别分组处理,不足的位数用0补足,对整数部分将0补在数的左侧,对小数部分将0补在数的右侧。,二进制转换成八进制,例:(10110111 .01101) 2,(10110111.01101) 2 =(267.32)8,八进制: 2 6 7 . 3 2,二进制: 010 ,110 , 1

10、11 . 011 , 010,二进制: 10 ,110 , 111 . 011 , 01,八进制转换二进制,例如: (123.46 ) 8 =(001,010,011 .100,110 ) 2 =(1010011.10011)2,二进制转换成十六进制,例:(110110111 .01101) 2,(10110111.01101) 2 =(1B7.68)16,十六进制: 1 B 7 . 6 8,二进制: 0001 ,1011 , 0111 . 0110 ,1000,二进制: 1 ,1011 , 0111 . 0110 ,1,例如: (7AC.DE ) 16 =(0111,1010,1100.11

11、01,1110 ) 2 =(11110101100 .1101111 )2 二进制用“B”表示;八进制用“Q”或“O”表示; 十进制用“D”表示;十六进制用“H”表示; 例如:101011B = 53Q(O) = 43D = 2BH,十六进制转换成二进制,(1 )真值: 正、负号加某进制数绝对值的形式称为真值。如二进制真值: X=+1011B y= -1011B (2) 机器数:符号数码化的数称为机器数如 :X=01011 Y=11011 一般用“0”表示“+”,“1”表示“”。 正 负,2、 真值和机器数,BCD码 8421码 2421码 余3码 8421码为有权代码, 0 0000 000

12、0 0011 数值为N=8d3+4d2+2d1+1d0 1 0001 0001 0100 十进制数63. 29的BCD码为: 2 0010 0010 0101 0110 0011 . 0010 1001 3 0011 0011 0110 4 0100 0100 0111 5 0101 1011 1000 6 0110 1100 1001 7 0111 1101 1010 8 1000 1110 1011 9 1001 1111 1100,2、 十进制数的编码与运算,BCD码运算应将每4位二进制数分为一组,组与组之间直接运算,逢十进一。但计算机中无法区分BCD码,一概作为二进制数处理,因此,计算

13、机做此运算后须进行调整。 调整方法: 和9 (1001)2, 不调整 和9 (1001)2 , 加6 (0110)2修正,十进制编码的加法运算,4、字符与字符串 白P27,(1) 字符: ASCII码, 用7位表示,外加一位校验位,共128个, 10个数字及26个大小写英文字母的ASCII码 (2) 字符串占用主存中连续的多个字节, 每个字节存储一个字符 高字节地址:高位字符 高字节地址:低位字符,(1) 奇偶校验码 (2) 海明校验码 (3) 循环冗余校验码(CRC码),5、 校验码,数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。 基本原理:加进一些冗余码,使合法数据编

14、码出现某些错误时,就成为非法编码。 码距:是根据任意两个合法码之间至少有几个二进制位不相同而确定的,若仅有一位不同,称其码距为1。,(1) 奇偶校验码,奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码。它的实现原理,是使原来合法编码码距由1增加到2。实现的具体方法,通常是为一个字节补充一个二进制位,称为校验位,通过设置校验位的值为0或1的方式,使字节自身的8位和该校验位含有1值的位数一定为奇数或偶数。在使用奇数个1的方案进行校验时,称为奇校验,反之则称为偶校验。只能发现一位错或奇数个位出错,但不能确定是哪一位错。,八位数据位,奇偶校验码的实现电路,(2) 海明校验码,这是由Rich

15、ard Hamming于1950年提出、目前还被广泛采用的一种很有效的校验方法,是只要增加少数几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现错误,还能指出哪一位出错,为自动纠错提供了依据。,假设校验位的个数为r,则校验位能表示2r个状态,可用其中的一个状态指出 “没有发生错误”,用其余的2 r -1个状态指出有错误发生在某一位,然而错误也可能发生在校验位,因此只有k= 2 r 1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系: 2r k + r + 1 (3.18) 如要能检出与自动校正一位错,并能同时

16、发现两位错,此时校验位的位数r和数据位的位数k应满足下述关系: 2r-1 k + r (3.19),按上述不等式,可计算出数据位k与校验位r的对应关系,如下表2.2所示,假设海明码的最高位号为m,最低位号为1,即 HmHm-1H2H1,则海明码的编码规律是: (1)校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 (2)海明码的每一位码Hi(包括数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验结果能正确反映出出错位的位号。,按照此规

17、律我们讨论数据位个数为8的海明码。 根据公式可以知道 r5 从而我们可以把海明码表示为: H13H12H11H10H9H8H7H6H5H4H3H2H1 根据规律,5个校验位P5P1对应海明码位号分别为H13,H8,H4,H2,H1。 P5只能放在H13一位上,它已经是海明码的最高位了,其他4位满足Pi的位号等于2i-1的关系。其余为数据位Di,则有如下排列: P5D8D7D6D5P4D4D3D2P3D1P2P1,在最顶横行的每个空位置都分别填1。 若只看低4横行,右5竖列的4个bit的组合值分别为十进制的1、2、4、8、0,则分配 D1 D2 D3 D4 D5 D6 D7 D8列的组合值为3

18、5 6 7 9 10 11 12 ,保证低4横行各竖列的编码值各不相同。,表1 校验位与数据位的对应关系,对应关系是:对Pi(i的取值为14),总是用处在Pi取值为1的行中的、用1标记出来的数据位计算该Pi的值。最高一个校验位P5,被称为总校验位,它的值是通过对全部8个数据位和其它全部校验位(不含P5本身)执行偶校验计算求得的。 形成各校验位的值的过程叫做编码,按刚说明的规则,4个校验位所用的编码方程为: P1 = D1 D2 D4 D5 D7 P2 = D1 D3 D4 D6 D7 P3 = D2 D3 D4 D8 P4 = D5 D6 D7 D8,译码方程和编码方程的对应关系很简单。译码方

19、程,是用一个校验码和形成这个校验码的编码方程执行异或,实际上是又一次执行偶校验运算。通过检查5个S的结果,可以实现检错纠错的目的。实际情况是,当译码求出来的S5、 S4、S3、S2、S1的值与表中的哪一列的值相同,就说明是哪一位出错;故人们又称表1,即校验位与数据位的对应关系表为出错模式表。若出错的是数据位,对其求反则实现纠错;若出错的是校验位则不必理睬。,译码的结果如下: (1) S5为0, S4 S3 S2 S1 也为0, 则任何一位均不错; (2) S5为1, 有一位出错, S4 S3 S2 S1指出的是出错的位数。 如D3错,则S5 S4 S3 S2 S1为10110; 如P1错,则S

20、5 S4 S3 S2 S1为10001,如P5错, S5 S4 S3 S2 S1为10000。 (3) S5为0, S4 S3 S2 S1不全为0,则有两位(含数据位、校验位)同时出错。 此时只知道是两位同时出错,但不能确定是哪两位出错,故已无法纠错。S5的作用在于区分是奇数个位出错还是偶数个位出错, S5为1是奇数位错,为0是无错或偶数位错。,(3) 循环冗余校验(CRC)码,CRC(Cyclic Redundancy check)码可以发现并纠正信息串行读写、存储或传送过程中出现的一位、多位错误,因此在磁介质存储器读写和计算机之间通信方面得到广泛应用。 CRC码一般是指k位信息码之后拼接r

21、位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码)的值,以及如何从k+r位信息码判断是否出错。,CRC码的编码方法,先介绍CRC码编码用到的模2运算。 模2运算是指以按位模2相加为基础的四则运 算,运算时不考虑进位和借位。 模2加减:即按位加,可用异或逻辑实现。模2 加与模2减的结果相同,即00=0 01=1 10=1 11=0。 两个相同的数据的模2和为0。,模2乘:按模2加求部分积之和。例: 1 0 1 0) 1 0 1 1 0 1 0 0 0 0 01 0 1 0 1 0 0 0 1 0 模2除:按模2减(加)求部分余数。每求一位商应使部分余数减少一位。上商的原则

22、是:当部分余数的最高位为1时,该位商1;当最高位为0时,该位商0。当部分的余数的位数小于除数的位数时,该余数即为最后余数。,下面介绍CRC码的编码方法。首先,可将待编码的k位有效信息位表达为多项 式M(x)形式:M(x)= Ck-1xk-1 + Ck-2x k-2 + +Cixi +C1x1 +C0式中Ci为0或1。若将信息位组左移r位,则可表示为多项式M(x) * xr ,这样就可以空出r位,以便拼接r个校验位,即,CRC码是用多项式M(x) * xr除以称为生成多项式G(x)(特定的一个多项式)所得到的余式。为了得到r位余数(校验位),G(x)必须是r+1位的,即为r次的多项式。 设所得余

23、数表达式为R(x),商为 Q(x),将余数拼接在信息位组左移r位空出的r位上,就构成这个有效信息位的CRC码。这个CRC码用多项式表示为: M(x) xr + R(x) = Q(x)* G(x) + R(x) + R(x)= Q(x)* G(x) + R(x)+R(x) = Q(X)* G(x) 这就证明CRC码是可被G(x) 除尽的多项式。,例:对四位源信息 1100,求三个校验位的值, 选择生成多项式为 1011,则有: M(x) = x3 + x2 = 1100 (k = 4) M(x)*x3 = x6 + x5 = 1100000 (左移, r = 3位) G(x) = x3+ x +

24、 1 =1011 (r+1 = 4位),M(x).x3 + R(x) = 1100000 + 010 = 1100010 将编好的循环校验码称为(7,4)码,即n=7,k=4,CRC码的译码与纠错,将收到的循环校验码用约定的生成多项式G(x)去除,如果码字无误则余数应为0,如有某一位出错,则余数不为0,且不同数位出错余数会不同。我们通过上例求出其出错模式,下页表2所示。更换不同的待测码字可以证明:余数与出错位的对应关系是不变的,只与码制和生成多项式有关。因此表2给出的关系可作为 (7,4) 码的出错判别依据。对于其他码制或选用其他生成多项式,出错模式将发生变化。,表2 (7,4)循环码的出错模

25、式 (生成多项式G(x)=1011),如果对余数补0继续除下去, 我们将发现一个有趣的结果:各次余数将按表2中的内容顺序循环。例如第七位出错,余数将为001,补0后再除,第二次余数为010,以后依次为100,011,反复循环。这是一个有价值的特点。如果我们在求出余数不为0之后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。表2说明,当出现余数(101)时,出错位也移到A1位置。可通过异或门将它纠正后在下一次移位时送回A7。继续移满一个循环(对7,4码共移七次),就得到一个纠正后的码字。这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件。,关于生成多项式,生成多项式应能满足

26、下列要求: (1) 任何一位发生错误都应当使余数不为0; (2) 不同位发生错误应当使余数不同; (3) 对余数继续作模2除,应使余数循环。,(二) 定点数定点数的表示和运算 1、 定点数的表示 无符号数的表示;有符号数的表示。 2、 定点数的运算 定点数的移位运算;原码定点数的加/减运算;补码定点数的加/减运算;定点数的乘/除运算;溢出概念和判别方法。,1、 定点数的表示 (1) 无符号数的表示: 每一位均用来表示数值, 即二进制表示方法, 如8位无符号数的取值范围是0255。 (2) 有符号数的表示: 一般用一位表示符号位, 其余位表示数值位,常见的有原码、补码、反码和移码。,1)原码表示

27、法,用“0”表示正号,用“1”表示负号,有效值部分用二进制的绝对值表示。以下n均表示字长. 小数: X 0 X1 X原 = 1-X=1+|X| -1 X 0,整数: X 0 X2n-1 X原 = 2n-1-X=2n-1+|X| -2n-1 X 0,原码小数的表示范围:(连符号位共n位) +0原 =0.0000000 ; -0原 =1.0000000 最大值 : 1- 2-(n-1) 最小值:-(1- 2-(n-1) 表示数的个数: 2n - 1,若二进制原码小数的位数分别是8、16位,求其该数表示的最大值、最小值及所能表示数的个数?,8位: 127/128,-127/128,255 16位:

28、32767/32768 , -32767/32768 , 65535,原码整数的表示范围:(连符号位共n位) +0原 =00000000 ; -0原 =10000000 最大值 : 2(n-1)-1 最小值:-(2(n-1)-1) 表示数的个数: 2n - 1,若二进制的位数分别是8、16,求其表示的最大值、最小值及表示数的个数,8位: 127,-127,255 16位: 32767 , -32767 , 65535,原码特点:,表示简单,易于同真值之间进行转换,实现乘除运算规则简单。 进行加减运算十分麻烦。,2 ) 补码表示法,模:计量器具的容量,或称为模数.4位字长的机器表示的二进制整数为

29、: 00001111 共16种状态,模为16= 24 。 整数N位字长的模值为 2n,一位符号位的纯小数的模值为2。 补码的定义:正数的补码就是正数本身,负数的补码是原负数加上模。,整数:字长为n X 0 X2n-1 x补= 2n+X=2n-|X| -2n-1 X0,小数:字长为n X 0 X1 x补= 2+X=2-|X| -1X0,n位纯整数: -2n-1 2n-1 -1 n位纯小数: - 1 1- 2-(n-1) 均能表示 2n 个数,补码的表示范围:,原码与补码之间的转换,由原码求补码: 正数 X补=X原 负数 符号除外,各位取反,末位加1 例:X= -01001001 X原=11001

30、001 X补=10110110+1=10110111 X补= 28 +X=100000000-1001001= 10110111 1 0 0 0 0 0 0 0 0 - 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1,解:,补码运算的优点是能将减法运算转换成加法运算。 X-Y补= X补+-Y补 例如 X=(11)10=(1011)2 Y=(5)10=(0101)2 已知字长n=5位 X-Y补 =X补+-Y补 =01011+11011=100110=00110=(6)10 注: 最高1位已经超过字长故应丢掉,3) 反码表示法,正数的反码与原、补码相同,负数的反码符号位为1,数值位是将

31、原码的数值按位取反. 小数:字长为n X 0 X1 X反= (2- 2-(n-1) )+X -1 X 0 X 0 X 2n-1 X反= (2n-1)+X -2n-1 X 0,反码小数:(连符号位共n位) +0反 =00000000 ; -0反 =11111111 反码小数的表示范围: -(1- 2-(n-1) 1- 2-(n-1) 表示数的个数: 2n 1 反码整数:(连符号位共n位) +0原 =00000000 ; -0原 =11111111 反码整数的表示范围: -(2-(n-1)-1) 2(n-1)-1 表示数的个数: 2n - 1,X移= 2n-1 + X -2n-1 X 2n-1 -

32、1 其中n表示机器字长。 相当于把补码的符号位变反,4) 移码表示法,(1) 定点数的移位运算 唐P234,2、 定点数的运算,左移 绝对值扩大,右移 绝对值缩小,在计算机中,移位与加减配合,能够实现乘除运算 带符号数的移位操作称为算术移位 无符号数的移位操作称为逻辑移位,1) 算术移位规则,1,右移 添 1,左移 添 0,0,反 码,补 码,原 码,负数,0,原码、补码、反码,正数,添补代码,码 制,算术移位后符号位不变,设机器数字长为 8 位(含位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。,解:,A = +26,则 A原 =

33、 A补 = A反 = 0,0011010,+ 6,0,0000110,+13,0,0001101,+104,0,1101000,+ 52,0,0110100,+26,0,0011010,移位前,= +11010,左移一位,左移两位,右移一位,右移两位,设机器数字长为 8 位(含位符号位),写出 A = 26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。,解:,A = 26, 6,1,0000110, 13,1,0001101, 104,1,1101000, 52,1,0110100, 26,1,0011010,移位前,原码,= 11010,左移一位,左移两位,右

34、移一位,右移两位, 6,1,1111001, 13,1,1110010, 104,1,0010111, 52,1,1001011, 26,1,1100101,移位前, 7,1,1111001, 13,1,1110011, 104,1,0011000, 52,1,1001100, 26,1,1100110,移位前,补码,反码,左移一位,左移两位,右移一位,右移两位,左移一位,左移两位,右移一位,右移两位,2) 算术移位和逻辑移位的区别,算术移位,有符号数的移位,逻辑移位,无符号数的移位,逻辑左移,逻辑右移,低位添 0,高位移丢,高位添 0,低位移丢,例如 01010011,逻辑左移,101001

35、10,逻辑右移,01011001,算术左移,算术右移,00100110,11011001(补码),高位 1 移丢,10110010,(2) 定点原码数的加/减运算 王P74,当两数相加时, 先要判断两数的符号, 如果是同号, 则相加; 如果是异号, 则相减。 进行减法运算还要比较两数的绝对值, 用大绝对值减去小绝对值, 最后还要确定运算结果的符号位。,(3) 定点补码数的加/减运算 唐P237,1、 补码加减运算公式,(1) 加法,(2) 减法,整数,A补 + B补,(mod 2n),小数,整数,A B补,= A+(B )补,= A补 + B补,(mod 2n),小数,A B补,= A+(B

36、)补,(mod 2),连同符号位一起相加,符号位产生的进位自然丢掉,= A补 + B补,A+B补=,A补 + B补,(mod 2),A+B补=,解:,A补,B补,A补 + B补,+,= 0 . 1 0 1 1,= 1 . 1 0 1 1,= 1 0 . 0 1 1 0,= A + B补,验证,0.1011, 0.0101,0.0110, A + B = 0. 0 1 1 0,A补,B补,A补 + B补,+,= 1 , 0 1 1 1,= 1 , 1 0 1 1,= 1 1 , 0 0 1 0,= A + B补,验证, 1001, 1110,解:, A + B = 1110,例,设机器数字长为

37、8 位(含 1 位符号位) 且 A = 15, B = 24,用补码求 A B,解:,A补 + B补,+,= 1, 1110111,= A B补,B补 = 0, 0011000,练习 2 设机器数字长为 8 位(含 1 位符号位) 且 A = 97,B = +41,用补码求 A B,A B = + 1110110 = + 118, A B = 1001 = 9,错,错,(4) 溢出概念和判别方法 唐P239,溢出的条件为: 正+正=负 负+负=正 正-负=负 负-正=正,运算结果超出计算机所能表示的范围时, 称为溢出。,1) 一位符号位判溢出,如,有 溢出,无 溢出,溢出,2) 两位符号位判溢

38、出,结果的双符号位 相同 未溢出,结果的双符号位 不同 溢出,最高符号位 代表其 真正的符号,(5) 定点数的乘除运算,1)定点原码一位乘法 原码表示的两个数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。 假定 X原 = XSX1 X2 Xn Y原 = YSY1Y2 Yn则 X*Y原 = X原 * Y原= (XSYS) (X1X2 Xn) * (Y1 Y2 Yn)结果是把符号位和数值邻接起来。,例:X= 0.1101 ,Y= 0.1011 计算X*Y 解:计算过程如下,取双符号位 部分积 乘数 00 0 0 0 0 1 0 1 1 +X 00 1 1 0 1 00 1 1

39、0 1 右移一位 00 0 1 1 0 1 1 0 1 1丢失 +X 00 1 1 0 1 01 0 0 1 1 右移一位 00 1 0 0 1 1 1 1 0 1丢失 +0 00 0 0 0 0 00 1 0 0 1 右移一位 00 0 1 0 0 1 1 1 1 0丢失 +X 00 1 1 0 1 01 0 0 0 1 右移一位 00 1 0 0 0 1 1 1 1 1丢失 乘积高位 乘积低位 因为X0Y0=0,乘积为正数,所以,X*Y=0.10001111,2) 定点补码一位乘,(1)X补与其真值的关系。 假定X补= X0X1X2Xn, 当真值X 0时,X0=0, X补 = 0.X1X2

40、Xn=X 当真值X 0, X0=1 : X补 = 1.X1X2Xn=2+X X = X补 2 = 1.X1X2Xn 2 = -1 + 0.X1X2Xn 从而得出,无论X为正负 若X补= X0.X1X2Xn,则 X = -X0 + 0.X1X2Xn,所以X/2补 X0. X0X1X2Xn,(2)补码的右移 已知 X补= X0X1X2Xn,求X/2补 由上面可知:X = -X0 + 0.X1X2Xn 1/2X = -1/2*X0 + *0.X1X2Xn = -X0 +1/2*X0 + *0.X1X2Xn = -X0 +1/2*X0 + 0.0X1X2Xn = -X0 + 0. X0X1X2Xn,(

41、3)补码一位乘法 设 被乘数X补= X0.X1X2Xn 乘数 Y补= Y0.Y1Y2Yn 则有X*Y补= X补*(-Y0 + 0.Y1Y2Yn ),证明如下: X正负任意,Y为正数 X补= 2+X=2n+1+X mod 2 Y补= Y= 0.Y1Y2Yn 则: X补* Y补= 2n+1*Y+X*Y mod 2 = 2+X*Y mod 2 = X*Y补 即: X*Y补=X补* Y补= X补* Y = X补(0.Y1Y2Yn), X正负任意,Y为负数 X补= X0.X1X2Xn Y补 = 1.Y1Y2Yn= 2+Y 得 Y= Y补 2= 0.Y1Y2Yn-1 X*Y = X(0.Y1Y2Yn) -

42、 X X*Y补= X(0.Y1Y2Yn)补 +-X补 因为0.Y1Y2Yn0,所以由 可知 X(0.Y1Y2Yn)补 X补( 0.Y1Y2Yn ) X*Y补= X补( 0.Y1Y2Yn ) +-X补 由 可得 X*Y补= X补( 0.Y1Y2Yn ) +-X补*Y0 = X补(-Y0+ 0.Y1Y2Yn ),例:X= - 0.1101 ,Y= 0.1011 计算X*Y 解:X补=11.0011, Y补=Y=0.1011 计算过程如下,取双符号位 部分积 乘数 00. 0 0 0 0 1 0 1 1 初始值 + X补 11. 0 0 1 1 + X补 11. 0 0 1 1 右移一位 11. 1

43、 0 0 1 1 1 0 1 右移1位 + X补 11. 0 0 1 1 + X补 10. 1 1 0 0 右移一位 11. 0 1 1 0 0 1 1 0 右移1位 +0 00. 0 0 0 0 0 11. 0 1 1 0 右移一位 11. 1 0 1 1 0 0 1 1 右移1位 + X补 11. 0 0 1 1 + X补 10. 1 1 1 0 右移一位 11. 0 1 1 1 0 0 0 1 右移1位 乘积高位 乘积低位 X*Y补 =1.01110001 X*Y=-0.10001111,例:X= - 0.1101 ,Y= -0.1011 计算X*Y 解:X补=11.0011, Y补=1

44、1.0101, -X补=00.1101 计算过程如下,取双符号位 部分积 乘数 00. 0 0 0 0 0 1 0 1 初始值 + X补 11. 0 0 1 1 + X补 11. 0 0 1 1 右移一位 11. 1 0 0 1 1 0 1 0 右移1位 + 0 00. 0 0 0 0 + 0 11. 1 0 0 1 右移一位 11. 1 1 0 0 1 1 0 1 右移1位 + X补 11. 0 0 1 1 X补 10. 1 1 1 1 右移一位 11. 0 1 1 1 1 1 1 0 右移1位 + 0 00. 0 0 0 0 + 0 11. 0 1 1 1 右移一位 11. 1 0 1 1

45、 1 1 1 1 右移1位 + -X补 00. 1 1 0 1 -X补 00. 1 0 0 0 1 1 1 1 乘积高位 乘积低位 X*Y补 =0.10001111,= X补* -Y0 + Y1*2-1 + Y2*2-2 + + Yn*2-n = X补* -Y0 +(Y1-Y1*2-1) + (Y2*2-1 - Y2*2-2 ) + + (Yn*2-(n-1) - Yn*2-n) = X补* (Y1- Y0)+(Y2- Y1)*2-1 + +(Yn- Yn-1)*2-(n-1) +(0 - Yn)*2-n)),布斯公式 n X*Y补= X补* ( - Y0 + Yi* 2-i ) i=1,n

46、= X补* ( Yi+1 - Yi )* 2-i , i=0 其中, Yn+1 =0,将上述公式加以变换:按照机器执行顺序求出每一步部分积 P0补0 P1补P0补+(Yn+1-Yn) X补2-1 Yn+1 =0 P2补P1补+(Yn-Yn-1) X补2-1 Pi补Pi-1补+(Yn-i+2-Yn-i+1) X补2-1 Pn补Pn-1补+(Y2-Y1) X补2-1 Pn+1补Pn补+(Y1-Y0) X补=X*Y补 开始时,部分积为0,然后在上一步部分积上,加(Yi+1-Yi) X补 (i=n,2,1),再右移一位,得到新得部分积,Yi+1与Yi为相邻位,(Yi+1-Yi)有0,1,-1三种情况:

47、 Yi+1-Yi0( Yi+1Yi 00或11 ),部分积加0,右移一位。 Yi+1-Yi1( Yi+1Yi 10 ),部分积加X补,右移一位。 Yi+1-Yi-1( Yi+1Yi 01 ),部分积加-X补,右移一位。 最后一步(i=n+1)不移位。,例:X= - 0.1101 ,Y= 0.1011 计算X*Y 解:X补=11.0011, Y补=0.1011 , -X补=00.1101 计算过程如下,取双符号位 部分积 乘数 00 0 0 0 0 0. 1 0 1 1 0 初始值,最后一位补0 + -X补 00 1 1 0 1 Y4Y5 10 , + X补 00 1 1 0 1 右移一位 00

48、 0 1 1 0 1 0 1 0 1 1 右移1位 + 0 00 0 0 0 0 Y3Y4 11 , + 0 00 0 1 1 0 右移一位 00 0 0 1 1 0 1 0 1 0 1 右移1位 + X补 11 0 0 1 1 Y2Y3 01, + X补 11 0 1 1 0 右移一位 11 1 0 1 1 0 0 1 0 1 0 右移1位 + -X补 00 1 1 0 1 Y1Y2 10, + -X补 00 1 0 0 0 右移一位 00 0 1 0 0 0 0 0 1 0 1 右移1位 + X补 11 0 0 1 1 Y0Y1 01, + X补 11 0 1 1 1 0 0 0 1 乘积

49、高位 乘积低位 X*Y补=1. 01110001,3) 原码两位乘 乘数和被乘数都用原码表示 两位乘数的取值可以有四种可能组合,每种组合对应于以下操作:00 相当于0*X,部分积Pi右移2位,不进行其它运算;01 相当于1*X,部分积Pi+ X后,右移2位;10 相当于2*X,部分积 Pi+ 2X后,右移2位;11 相当于3*X,部分积 Pi + 3X后,右移2位。,原码两位乘规则,例:X= 0.100111 ,Y= 0.100111 计算X*Y 解: -X补1.011001 部分积 乘数 欠位C 000 0 0 0 0 0 0 1 0 0 1 1 1 0 + -X补 111 0 1 1 0

50、0 1 111 0 1 1 0 0 1 右移两位 111 1 1 0 1 1 0 0 1 1 0 0 1 1 +2X 001 0 0 1 1 1 0 001 0 0 0 1 0 0 右移两位 000 0 1 0 0 0 1 0 0 0 1 1 0 0 +2X 001 0 0 1 1 1 0 001 0 1 1 1 1 1 右移两位 000 0 1 0 1 1 1 1 1 0 0 0 1 0 乘积高位 乘积低位 因为 符号位为 ( X0Y0)0, 所以 X*Y补=0.010111110001 所以 X*Y=0.010111110001,原码两位乘法应该注意: (1) 如上面最后一次运算时欠下 +

51、4X ,则部分积右移2位后还需补充完成 +X 操作, +X 后不再移位。 (2)上面例题计算过程中的X不一定是原题中的X(当X为负值时,X应为X的绝对值)。 (3)符号位最后单独讨论。,4) 补码两位乘 由布斯公式可知: 若上一步乘法的部分积为 Pi补 ,则本步的部分积应为Pi+1补 = Pi补 + ( Yn+1-i -Yn-i ) * X补 2-1 下一步的部分积应为Pi+2补 = Pi+1补 + ( Yn-i -Yn-1-i ) * X补 2-1 将第一个公式中的 Pi+1补 代入第二个公式中, 得到 Pi+2补 = Pi补+( Yn+1-i -Yn-i ) *X补 2-1 +(Yn-i-

52、Yn-1-i)*X补 2-1 = Pi补+ ( Yn+1-i -Yn-i ) *X补+ 2 * ( Yn-i -Yn-1-i ) *X补 2-2 = Pi补 + ( Yn+1-i +Yn-i - 2 * Yn-1-i) * X补 2-2 Yn+1-i + Yn-i - 2 * Yn-1-i组合值以及相应的操作如下表所示,补码两位乘组合值与部分积的关系,加法器应使用三位符号位,以避免 运算结果溢出的情形.部分积和乘数每次应右移两位。 注意:求部分积的次数和右移操作的控制问题:当乘数由1位符号和n(奇数)位数据位组成时,求部分积的次数为 (1+n)/2 次 ,而且最后一次的右移操作只右移一位。若数

53、值位本身为偶数n,则可采取下列两种方法之一: 1) 可在乘数最后一位补一个0,乘数的数据位就成了奇数,而且其值不变,求部分积的次数位n/2 + 1,最后一次右移操作也只右移一位。 2) 乘数再增加一位符号位,使总位数仍为偶数,此时求部分积的次数为n/2 + 1,而且最后一次不再执行右移操作。,例:X= -0.1101 ,Y= -0.1011 计算X*Y 解:则 X补111.0011,-X补000. 1101, 2X补110.0110 2-X补001.1010 方法一、乘数最低位补0 Y补1.01010 部分积 乘数 附加位 000 0 0 0 0 1. 0 1 0 1 0 0 + 2-X补 001 1 0 1 0 001 1 0 1 0 右移两位 000 0 1 1 0 1 0 1 0 1 0 1 + -X补 000 1 1 0 1 001 0 0 1 1 右移两位 000 0 1 0 0 1 1 1 0 1 0 1 + -X补 000 1 1 0 1 001 0 0 0 1 右移一位 000 1 0 0 0 1 1 1 1 0 1 0 乘积高位 乘积低位 X*Y补=0.10001111,例:X= -0.1101 ,Y= -0.1011 计算X*Y 解:则 X补111.0011, -X补000. 1101 2X

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论