计算机组成原理——2.ppt_第1页
计算机组成原理——2.ppt_第2页
计算机组成原理——2.ppt_第3页
计算机组成原理——2.ppt_第4页
计算机组成原理——2.ppt_第5页
已阅读5页,还剩169页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 运算方法和运算部件,第二章 运算方法和运算部件,2.1 数据的表示方法和转换 2.2带符号的二进制数据在计算机中的表示方法及加减法运算 2.3 二进制乘法运算 2.4 二进制除法运算 2.5 浮点数的运算方法 2.6 运算部件 2.7 数据校验码,1.二进制、八进制、十进制和十六进制的概念、表示及互换。 2.什么是真值?什么是机器数?机器数的正负如何表示? 2.什么是BCD码? 4.什么是有权码?什么是无权码?常见的无权码有哪几种? 5.数字串在计算机有哪几种表示方法?各有什么特点?,2.1 数据的表示方法和转换,2.1 数据的表示方法和转换,2.1.1 数值型数据的表示和转换, 数制

2、,任意一个十进制数(N)10可表示为:,任意一个八进制数可表示为:,任意一个二进制数可表示为,2.1 数据的表示方法和转换,2.1.1 数值型数据的表示和转换, 数制,任意一个十六进制数可表示为:,二、八、十六和十进制数的对应关系,二进制数 八进制数 十六进制数 十进制数,0 0 0 0 0 0 0 0,0 0 0 1 0 1 1 1,0 0 1 0 0 2 2 2,0 0 1 1 0 3 3 3,0 1 0 0 0 4 4 4,0 1 0 1 0 5 5 5,0 1 1 0 0 6 6 6,0 1 1 1 0 7 7 7,1 0 0 0 1 0 8 8,1 0 0 1 1 1 9 9,1 0

3、 1 0 1 2 A 1 0,1 0 1 1 1 3 B 1 1,1 1 0 0 1 4 C 1 2,1 1 0 1 1 5 D 1 3,1 1 1 0 1 6 E 1 4,1 1 1 1 1 7 F 1 5,不同数制间的数据转换,二进制数或十六进制数转换为十进制数,方法:按权展开,十进制整数转换为二或十六进制数,整数部分转换:用除法 十进制数整数部分不断除以基数2或16,并记下余数,直到商为0为止 由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数,2.1 数据的表示方法和转换,2.1.1 数值型数据的表示和转换,2.1 数据的表示方法和转换,2.1.1 数值型数据的表示和转换,

4、不同数制间的数据转换,十进制小数转换为二或十六进制数,小数部分转换:用乘法 分别乘以各自的基数,记录整数部分,直到小数部分为0为止 小数转换会发生总是无法乘到为0的情况 可选取一定位数(精度) 将产生无法避免的转换误差,2.1.2 十进制数的编码与运算, 有权码:表示一位十进制数的二进制码,其每一 位有确定的权。(BCD码), 十进制数的编码与运算,2.1 数据的表示方法和转换,二进制数,自然码,8421码,2421码,5421码,四位有权码,5211码,0,1,2,3,4,5,6,7,8,9, 无权码: 表示一位十进制数的二进制码,其每一 位没有确定的权。,0 1 2 3 4 5 6 7 8

5、 9,0011 0100 0101 0110 0111 1000 1001 1010 1011 1100,0000 0001 0011 0010 0110 1110 1010 1000 1100 0100,0000 0100 0110 0010 1010 1011 0011 0001 1001 1000,2.1.2 十进制数的编码与运算, 十进制数的编码与运算, 数字串在计算机内的表示与存储,主要有两种形式:, 字符形式:一个字节存放一位十进制数或符号位。, 压缩的十进制数形式:一个字节存放二位十进制数。,2.1.2 十进制数的编码与运算,2.1 数据的表示方法和转换,十进制数串的表示方法,1

6、.字符串形式 每个十进制的数位或符号位都用一个字节存放,-38,2.压缩的十进制数串形式 一个字节存放两个十进制的数位,+12,123,-12,每个数位可用BCD码或ASCII码,2.1.2 十进制数的编码与运算,ASCII码 汉字的表示,2.1.2 字符编码,2.1 数据的表示方法和转换, ASCII码,“美国标准信息交换代码”(American Standard Code for Information Interchange),简称ASCII码。7位二进制编码,可表示27=128个字符。 ASCII码中,编码值031不对应任何可印刷(或称有字形)字符,通常称它们为控制字符,用于通信中的通

7、信控制或对计算机设备的功能控制。编码值为32的是空格(或间隔)字符SP。编码值为127的是删除控制DEL码。其余的94个字符称为可印刷字符。,2.1.2 字符编码,2.1 数据的表示方法和转换,ASCII字符编码表,0-3位,4-7位,汉字的表示,特点: (1)汉字是一种象形文字,据统计,从甲骨文至今约有六万左右的汉字。目前常见的汉字有约七千个。 (2)汉字字形结构复杂,笔划繁多。 (3)汉字同音字多,多音字多。 涉及多种编码:,2.1.2 字符编码,2.1 数据的表示方法和转换,汉字的输入编码,数字编码 国标区位码,用数字串代表一个汉字输入 字音编码 以汉字拼音为基础的输入方法 字形编码 用

8、汉字的形状(笔划)来进行的编码 例如五笔字形 混合编码,汉字交换码,汉字交换码是不同的汉字处理系统之间交换信息用的编码,汉字内码,汉字内码是用于汉字信息的存储、检索等操作的机内代码,一般采用两个字节表示 汉字内码有多种方案,常以国标码为基础的编码 例如,将国标码两字节的最高位置1后形成 汉字“啊”的国标码 3021H (0011 0000 0010 0001) 对应的汉字内码 B0A1H (1011 0000 1010 0001),字模码,汉字的字模码为: 16位 16位=32字节,汉字字模点阵及编码,汉字的表示方法,汉字的输入编码、交换码、汉字内码、字模码是计算机中用于输入、内部处理、交换、

9、输出四种不同用途的编码。,字符代码化(输入),2.2.1 无符号数和带符号数,8 位 0 255,16 位 0 65535,2.2 带符号数的表示方法及加减法运算,无符号数,带符号的数 符号数字化的数,+ 0.1011,+ 1100, 1100, 0.1011,真值 机器数,6.1,2.2.1 无符号数和带符号数,2.2 带符号数的表示方法及加减法运算,带符号数,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,原码表示法,规则:机器数的最高一位表示符号,“0”表示正号;“1”表示负号,后面各位用数的绝对值表示。,定点整数的原码形式为x0 x1x2 xn,+0原 =0

10、0000000 -0原 =10000000,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,原码表示法,定点小数的原码形式为x0.x1x2 xn,+0原 = 0.00 -0原 = 1.00,原码表示的优缺点 优点:数的原码与真值之间的关系比较简单。 缺点:在机器中进行加减法运算的规则比较复杂。 两数相加时,同号:数值相加 异号:相减 相减时,要比较绝对值大小,然后大数减小数,最后还要选择恰当的符号。,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,原码表示法,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,补码

11、表示法,整数的补码 X补为整数X的补码,X为任意整数,n为整数的位数。 小数的补码: X补是小数X的补码,X为任意小数,2为模数。,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,补码表示法,X1补= +0.0000补=0.0000 X2补= -0.0000补=10.0000-0.0000=10.0000=0.0000 mod 2,结论:数值0的补码表示形式中唯一的。,X=+0.1011, X补=0.1011 X=-0.1011, X补=2+X=10.0000+(-0.1011)=1.0101,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移

12、码,补码表示法,当补码加法运算的结果不超出机器范围时,可得出以下重要结论: 用补码表示的两数进行加法运算,其结果仍为补码。 不管各数符号如何,都可用补码直接进行加法运算。 X+Y补=X补+Y补 符号位与数值位一样参与运算,变减法为加法。 X-Y补=X补+-Y补,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,补码表示法,若寄存器A、B分别保存了X补、Y补,要求: 描述加法器实现X+Y补A的过程? 描述加法器实现X-Y补A的过程?,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,反码表示法,小数的反码:,整数的反码:,2.2 带符号数的表示

13、方法及加减法运算,2.2.2 原码、补码、反码、移码,反码表示法,0的反码不唯一: 整数0 +0反= 000 -0反= (2n+1-1) + (-000) = 111 (mod 2n+1-1 ) 小数0 +0反= 0.000 -0反= 2 - 2-n - 0.000 = 1.11 (mod 2-2-n),数据从补码、反码表示形式转换成原码 (1)X补补=X原 (2)X反反=X原,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,三种机器数的小结,对于正数,原码 = 补码 = 反码,例:设机器数字长为 8 位(其中一位为符号位) 对于整数,当其分别代表无符号数、原码、补

14、码和 反码时,对应的真值范围各为多少?,-0,-1,-128,-127,-127,-126,-3,-2,-1,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,移码表示法,x 为真值,n 为 整数的位数,移码在数轴上的表示,即无论x是正还是负,一律加上2n,称2n为基数,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,移码表示法,移码与补码的关系:,真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。,设 x = +1100100,x移 = 27 + 1100100,x补 = 01100100,设 x = 11001

15、00,x移 = 27 1100100,x补 = 10011100,= 11100100,= 00011100,1,0,0,1,2.1.5 数的机器表示,移码表示法,0的移码唯一: 整数0 +0移= 2n + 000 = 1000 -0移= 2n - 000 = 1000,用移码表示浮点数的阶码,能方便地判断浮点数的阶码大小,2.1 数据与文字的表示方法,2.2 带符号数的表示方法及加减法运算,真值、补码和移码的对照表,- 1 0 0 0 0 0, 0 0 0 0 0,+ 1 1 1 1 1,0 0 0 0 0 0,1 1 1 1 1 1,0 0 0 0 0 0,1 0 0 0 0 0,2.2

16、带符号数的表示方法及加减法运算,移码的计算,对于n+1位的二进制整数X=X0X1X2.Xn,移码定义为:,X移2n +X -2n X2n,例:设n=4,X=1010、Y=-1010,求:X移=?Y移=?,解: X移=2n+X= 24+1010=10000101011010 Y移=2n+Y= 24+(-1010)=10000-1010=00110,2.2.2 原码、补码、反码、移码,2.2 带符号数的表示方法及加减法运算,移码的计算,例:设n=4,X=0010、Y=0101,求:X+Y移=? 解:本题中取: X+Y=0010+0101=0111 X+Y移=2n+(X+Y)= 24+0111=10

17、111,X+Y移=Y移+X移+ 2n,若采用移码进行加法运算,怎样才能得到正确的X+Y移? X移=2n+X= 24+0010=10010 Y移=2n+Y= 24+0101=10101 Y移+X移=10010+ 10101= 00111 X+Y移=Y移+X移+ 2n=00111+10000=10111,2.2.2 原码、补码、反码、移码,2.2 带符号数的表示方法及加减法运算,2.2.2 原码、补码、反码、移码,正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法 采用补码,减法运算可以用加法运算实现,节省硬件,目前机器中广泛采用补码表示法 有些机器用原码进行存储和传送,运算时改用补码

18、 有些机器做加减法时用补码,做乘除法时用原码 移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反,总结,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,加减运算,补码加法运算的公式: x补+y补= + 补,补码减法运算的公式: -补 x补-y补x补 -y补,例:0.1001,0.0101,求,x 补0.1001,y 补0.0101 x 补 0.1001 y 补 0.0101 + 补 0.1110 所以0.1110,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,加减运算,2.2 带符号数的

19、表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,加减运算,例:+0.1101,+0.0110,求-,x补0.1101, y补0.0110 -y补1.1010 x 补 0.1101 -y 补 1.1010 - 补 10.0111 所以0.0111,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,加减运算,A=10 B=7 10+7 : 0 1010,0 0111,1 0001,A= -10 B= -7 -10+(-7):,0 1111,1 0110 1 1001,溢出!,例:,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其

20、溢出的处理,溢出的处理,1、 什么是溢出? 当运算结果超出机器数所能表示的范围时,称为溢出。 两个异号数相加或两个同号数相减,其结果是不会溢出的。仅当两个同号数相加或者两个异号数相减时,才有可能发生溢出的情况。,两个正数相加,结果为负称为上溢(正溢)。 两个负数相加,结果为正称为下溢(负溢)。,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,溢出的处理,A=10 B=7 10+7 : 0 1010,0 0111,1 0001,A= -10 B= -7 -10+(-7):,0 1111,1 0110 1 1001,溢出!,正溢,负溢,例:,2.2 带符号数的表示

21、方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,溢出的处理,2、溢出条件及实现逻辑,方法一:fA,fB表示两操作数(A、B)的符号位,fS为结果的符号位。 若两正数相加结果为负或两负数相加结果为正,都有溢出产生。 即:,2.2 带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,溢出的处理,方法二: 当任意符号两数相加时,如果CCf ,运算结果正确,其中C为数值最高位的进位,Cf 为符号位的进位。如果CCf ,则为溢出,即:,当最高位和次高位不是同时产生进位,则结果溢出。,正确,0 0011 0 0010,(1)A=3 B=2 3+2:,0 0101,(2)A

22、=10 B=7 10+7:,0 1010 0 0111,1 0001,正溢,正确,负溢,正确,正确,(3)A= -3 B= -2 -3+(-2):,1 1011,1 1101 1 1110,(4)A= -10 B= -7 -10+(-7):,0 1111,1 0110 1 1001,(5)A=6 B= -4 6+(-4):,0 0010,0 0110 1 1100,(6)A= -6 B=4 -6+4:,1 1110,1 1010 0 0100,Cf=0 C =0,Cf=0 C =1,Cf=1 C =1,Cf=1 C =0,Cf=1 C =1,Cf=0 C =0,1,1,1,1,1,1,2.2

23、带符号数的表示方法及加减法运算,2.2.3 补码的加减运算及其溢出的处理,溢出的处理,方法三: 采用双符号位fS2 ,fS1 。正数的双符号位为00,负数的双符号位为11。符号位参与运算,当结果的两个符号位fS1 、fS2 不相同时,为溢出。即:,fs2fs1 : 00结果为正,无溢出 01正溢 10负溢 11结果为负,无溢出 不论溢出与否,结果符号为fs2.,(1)3+2:,正确,00 0011 00 0010,00 0101,(4)10+7:,00 1010 00 0111,01 0001,正溢,正确,负溢,正确,正确,(2)-3+(-2):,11 0111,11 1101 11 1110

24、,(5)-10+(-7):,10 1111,11 0110 11 1001,(3)6+(-4):,00 0010,00 0110 11 1100,(6)-6+4:,11 1110,11 1010 00 0100,第一符号位fs2,第一符号位fs2,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,全加器,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,全加器,全加器的表达式为: Si = Ai Bi Ci Ci+1 = AiBi + BiCi + AiCi 一位全加器内部逻辑图:,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,串行进位加法器

25、,2.2 带符号数的表示方法及加减法运算,串行进位加法器,如何提高加法器工作速度呢?,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,先行进位加法器,超前进位的主要目标: 使C1、C2、C3、C4同时产生而不是依次产生。 如何使C1、C2、C3、C4同时产生?,4位先行进位加法器递推公式,当全加器的输入均取反码时,它的输出也均取反码。 将上式改写成如下:,4位先行进位加法器递推公式,四位超前进位加法器的逻辑图,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,ALU74181,功能表能执行16种算术、16种逻辑运算,2.2 带符号数的表示方法及加减法运算,2.

26、2.4 二进制加法器,ALU74181,输入/输出信号: A0A3、B0B3: 参加运算的两个数 S0S3 : 选择控制端-选择不同的算术和逻辑运算 M : 状态控制端,为高电平执行逻辑运算;为低电 平执行算术运算 Cn :ALU的最低进位位 F0F3:ALU的运算结果 Cn+4 :ALU最高位产生的进位 G、P :ALU的进位产生与传递,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,ALU74181,用4片74181电路可组成16位ALU,片内进位快速,但片间进位是逐片传递的,由此形成F0F15的时间还是比较长。,若把16位ALU中的每四位作为一组,用位间快速进位的形成方

27、法来实现16位ALU中“组间快速进位”,那么就能得到16位快速ALU。,2.2 带符号数的表示方法及加减法运算,2.2.4 二进制加法器,ALU74181,74181: 实现算术逻辑运算及组内并行。 74182:接收了组间的辅助函数后,产生组间的并行进位 信号CIII 、CII 、CI,分别将其送到各小组的加法器上。,2.3 定点乘法运算,2.3.1 定点原码一位乘法,分析笔算乘法,A = 0.1101 B = 0.1011,AB = 0.10001111,0 . 1 1 0 1,0 . 1 0 1 1,1 1 0 1,1 1 0 1,0 0 0 0,1 1 0 1,0 . 1 0 0 0 1

28、 1 1 1,符号位单独处理,乘数的某一位决定是否加被乘数,4个位积一起相加,乘积的位数扩大一倍,?,笔算乘法改进,A B = A 0.1011,= 0.1A + 0.00A + 0.001A +0.0001A,= 0.1A + 0.00A + 0.001( A +0.1A),= 0.1A + 0.010 A + 0. 1( A +0.1A),= 0.1A +0.1 0 A+0.1(A + 0.1A),= 2-1A +2-1 0 A+2-1(A + 2-1(A+0),第一步 被乘数A + 0,第三步 部分积 + 被乘数,改进后的笔算乘法过程(竖式),0 . 0 0 0 0,0 . 1 1 0

29、1,0 . 1 1 0 1,0 . 1 1 0 1,0 . 0 0 0 0,0 . 1 1 0 1,初态,部分积 = 0,乘数为 1,加被乘数,乘数为 1,加被乘数,乘数为 0,加 0,乘数为 1,加 被乘数,被乘数只与部分积的高位相加,硬件,3个寄存器,具有移位功能,一个全加器,2.3 定点乘法运算,2.3.1 定点原码一位乘法,原码一位乘运算规则,以小数为例,乘积的符号位单独处理 x0y0,数值部分为绝对值相乘 x* y*,2.3 定点乘法运算,2.3.1 定点原码一位乘法,原码一位乘递推公式,z0,例:,已知 x = 0.1110 y = 0.1101 求x y原,解:,数值部分的运算,

30、0 . 0 0 0 0,0 . 1 1 1 0,0 . 1 1 1 0,0 . 0 0 0 0,0 . 1 1 1 0,0 . 1 1 1 0,部分积 初态 z0 = 0,逻辑右移,逻辑右移, 数值部分按绝对值相乘,x* y* = 0. 1 0 1 1 0 1 1 0,则 x y原 = 1. 1 0 1 1 0 1 1 0,特点:,绝对值运算,逻辑移位,用移位的次数判断乘法是否结束,例:,已知 x = 0.1110 y = 0.1101 求x y原,2.3 定点乘法运算,2.3.1 定点原码一位乘法,逻辑实现,2.3 定点乘法运算,2.3.1 定点原码一位乘法,逻辑实现,2.3 定点乘法运算,

31、2.3.1 定点原码一位乘法,工作原理: 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加,其结果输出至R0的输入端。 一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1也在控制信号LDR1作用下右移一位,且计数器i计数一次。 当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T,乘法宣告结束。 若将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,低n位部分在R1,R1中原来的乘数Y由于移位而全部丢失。,校正法,2.3 定点乘法运算,2.3.2 定点补码一位

32、乘法,所谓校正法,将X补和Y补按原码运算,所得结果 根据情况加以校正,从而得到XY补。 算法分析: 若被乘数X的符号任意X补 = X0.X1X2Xn 1)Y为正:Y补 = 0.Y1Y2Yn XY补 = X补(0.Y1Y2Yn) 2)Y为负:Y补 = 1.Y1Y2Yn XY补 = X补(0.Y1Y2Yn)+-X补 3)Y符号任意:XY补 = X补0.Y1Y2Yn+-X补Y0,符号位,Y0,除按 1)计算外,另加-X补校正,直接按原码乘法运算,移位时按补码规则移位,例:X- 0.1101 Y=0.1011 X补1.0011 Y补0.1011 求XY补,00 . 0 0 0 0,11 . 0 0 1

33、 1,11 . 0 0 1 1,11 . 0 0 1 1,00 . 0 0 0 0,11 . 0 0 1 1,初态,部分积 = 0,乘数为 1,加被乘数,乘数为 1,加被乘数,乘数为 0,加 0,乘数为 1,加 被乘数,XY补1. 01110001 XY= -0.10001111,例:X- 0.1101 Y= -0.1011 X补1.0011 Y补1.0101 求XY补,00 . 0 0 0 0,11 . 0 0 1 1,11 . 0 0 1 1,00 . 0 0 0 0,11 . 0 0 1 1,00 . 0 0 0 0,初态,部分积 = 0,乘数为 1,加被乘数,乘数为 0,加0,乘数为1

34、,加被乘数,乘数为 0,加 0,-X补,得结果,XY补0.10001111,比较法(布斯公式被乘数、乘数符号任意),2.3 定点乘法运算,2.3.2 定点补码一位乘法,x y补,2-1,2-2,附加位 yn+1,比较法(布斯公式被乘数、乘数符号任意),2.3 定点乘法运算,2.3.2 定点补码一位乘法,Booth 算法递推公式,z0补= 0,z1补= 2-1(yn+1yn) x补+z0补 yn+1 = 0,zn补= 2-1(y2y1)x补+zn-1补,x y补= zn补+(y1y0)x补,最后一步不移位,如何实现 yi+1yi ?,0 0,0 1,1 0,1 1,0,1,-1,0,例:,已知

35、x = -0.1101 y = 0.1011 求xy补,解:,0 0 . 0 0 0 0,0 0 . 1 1 0 1,0 0 . 1 1 0 1,0 0 . 0 0 0 0,1 1 . 0 0 1 1,0 0 . 1 1 0 1,1 1 . 0 0 1 1,0 . 1 0 1 1,0,x补 = 11.0011,y补 = 0.1011,x补 = 00.1101,+x补,+0,+x补,+x补,+-x补, xy补 =1.01110001 xy=-0.10001111,最后一步不移位,算法分析,2.3 定点乘法运算,2.3.3 定点原码两位乘法每次用两位乘数去乘被乘数,Pi+1=2-2Pi Pi+1=

36、2-2(Pi+X) Pi+1=2-2(Pi+2X) Pi+1=2-2(Pi+3X),X左移1位即得2X,如何实现+3X操作?,算法分析,2.3 定点乘法运算,2.3.3 定点原码两位乘法每次用两位乘数去乘被乘数,Pi+1=2-2(Pi+3X),4X-X,Pi+1=2-2(Pi+3X)=2-2(Pi+4X-X)=2-2(Pi-X)+X,运算规则,2.3 定点乘法运算,2.3.3 定点原码两位乘法每次用两位乘数去乘被乘数,例,已知 x = 0.100111 y = 0.100111 求xy原,0 0 0 . 0 0 0 0 0 0,0 0 0 . 1 0 0 1 1 1,1 1 1 . 0 1 1

37、 0 0 1,1 0 0 1 1 1,0,初态 z0 = 0, x*, Cj = 1,0 0 1 . 0 0 1 1 1 0,+ 2x*,Cj = 0,0 0 1 . 0 0 1 1 1 0,+ 2x*, Cj = 0,1,0,0,补码右移,补码右移,解:,数值部分的运算, 数值部分的运算,x* y* = 0. 0 1 0 1 1 1 1 1 0 0 0 1,则 x y原 = 0. 0 1 0 1 1 1 1 1 0 0 0 1,例,特点:,绝对值的补码运算,算术移位,用移位的次数判断乘法是否结束,已知 x = 0.100111 y = 0.100111 求xy原,例,已知 x = 0.111

38、111 y = 0.111001 求xy原,0 0 0 . 0 0 0 0 0 0,0 0 0 . 1 1 1 1 1 1,0 0 0 . 1 1 1 1 1 1,1 1 1 0 0 1,0,初态 z0 = 0,+ x*, Cj = 0,0 0 1 . 1 1 1 1 1 0,+ 2x*,Cj = 0,1 1 1 . 0 0 0 0 0 1, x*, Cj = 1,0 0 0 . 1 1 1 1 1 1,+ x*, Cj = 0,0,0,1,补码右移,补码右移,解:,数值部分的运算, 数值部分的运算,x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1,则 x y原 = 1.

39、1 1 1 0 0 0 0 0 0 1 1 1,例,已知 x = 0.111111 y = 0.111001 求xy原,特点:,绝对值的补码运算,算术移位,用移位的次数判断乘法是否结束,为了进一步提高乘法运算的速度,可采用高速乘法模块组成的阵列乘法器,设有两个不带符号的二进制数。 例:m=n=4时,有: a4 a3 a2 a1 a0 * b4 b3 b2 b1 b0 - a4b0 a3b0 a2b0 a1b0 a0b0 a4b1 a3b1 a2b1 a1b1 a0b1 a4b2 a3b2 a2b2 a1b2 a0b2 a4b3 a3b3 a2b3 a1b3 a0b3 a4b4 a3b4 a2b

40、4 a1b4 a0b4,P8 P7 P6 P5 P4 P3 P2 P1 P0,2.3 定点乘法运算,2.3.4 阵列乘法器,2.3 定点乘法运算,2.3.4 阵列乘法器,2.3 定点乘法运算,2.3.4 阵列乘法器,不带符号的阵列乘法器,2.3 定点乘法运算,2.3.4 阵列乘法器,带符号的阵列乘法器,2.4 定点除法运算,2.4.1 定点原码一位除法,分析笔算除法,x = 0.1011 y = 0.1101 求 xy,0 . 1 0 1 1,0 . 1 1 0 1,0 . 0 1 1 0 1,0 . 0 1 0 0 1,0 . 0 0 1 1 0 1,0 . 0 0 0 1 0 1,0 .

41、0 0 0 0 1 1 0 1,0 . 0 0 0 0 0 1 1 1,1,商符单独处理,心算上商,商符心算求得,0,0 .,1,0,1,0,0,0,?,余数不动低位补“0” 减右移一位的除数,上商位置不固定,?,?,笔算除法和机器除法的比较,商符单独处理,心算上商,符号位异或形成,| x | | y | 0 上商 1,| x | | y | 0 上商 0,2 倍字长加法器,上商位置 不固定,1 倍字长加法器,在寄存器 最末位上商,2.4 定点除法运算,2.4.1 定点原码一位除法,原码除法,以小数为例,被除数不等于 0,除数不能为 0,约定,2.4 定点除法运算,2.4.1 定点原码一位除法

42、,恢复余数法,0 . 1 0 1 1,1 . 0 0 1 1,1 . 0 0 1 1,1 . 0 0 1 1,0 . 0 0 0 0,+ y*补,0.,0 . 1 1 0 1,恢复余数,+ y*补,+y*补,解:,x原 = 1.1011 y原 = 1.1101,1,+y*补,y*补 = 0.1101 y*补 = 1.0011,逻辑左移,逻辑左移,1 . 0 0 1 1,0 . 1 1 0 1,1 . 0 0 1 1,+ y*补,恢复余数,+ y*补,上商 5 次,第一次上商判溢出,余数为正 上商 1,余数为负 上商 0,恢复余数,移 4 次,1,0,1,+y*补,逻辑左移,不恢复余数法(加减交

43、替法),余数 Ri0 上商 “1”,Ri+1=2Ri y*,余数 Ri0 上商 “0”, Ri + y* 恢复余数,Ri+1=2( Ri+y*) y* = 2Ri + y*,加减交替,恢复余数法运算规则,不恢复余数法运算规则,上商“1” 2Ri y*,上商“0” 2Ri + y*,解:,例:,0 . 1 0 1 1,1 . 0 0 1 1,0 . 1 1 0 1,1 . 0 0 1 1,1 . 0 0 1 1,0 . 1 1 0 1,0 . 0 0 0 0,+ y*补,0.,+y*补,+ y*补,+ y*补,+y*补,x原 = 1.1011,y*补 = 0.1101,y*补 = 1.0011,

44、y原 = 1.1101,1,1,0,1,逻辑左移,上商 n+1 次,特点:,用移位的次数判断除法是否结束,第一次上商判溢出,移 n 次,加 n+1 次,例:,规则,2.4 定点除法运算,2.4.1 定点补码一位除法,小 结,简 化 为,(同号),(异号),(异号),(同号), 商值的确定,商值的确定,2.4 定点除法运算,2.4.1 定点补码一位除法,新余数的形成,加减交替,2.4 定点除法运算,2.4.2 定点补码一位除法,例:,解:,x补 = 1.0101 y补 = 0.1101 y补 = 1.0011,1 . 0 1 0 1,0 . 1 1 0 1,1 . 0 0 1 1,0 . 1 1

45、 0 1,0 . 1 1 0 1,0 . 0 0 0 0,异号做加法,1,0 . 0 0 1 0,同号上“1”,异号上“0”,+y补,异号上“0”,+y补,同号上“1”,末位恒置“1”,0,0,1,1,+y补,逻辑左移,补码除法共上商 n +1 次(末位恒置 1) 第一次为商符,加 n 次 移 n 次,第一次商可判溢出,精度误差最大为 2-n,小结,2.4 定点除法运算,2.4.2 定点补码一位除法,2.5 浮点数据表示,2.5.1 浮点数,浮点数: 是指小数点可浮动的数据。,任意一个十进制数N可以写成:,一个任意进制数N可以写成:,其中:N为浮点数;M为浮点的尾数(纯小数) E为阶码(浮点指

46、数,整数); R尾数的基数(常数,一般为2、8、16),定义,计算机中数据的数值范围和精度,数值范围是指机器所能表示的一个数的最大值和最小值之间的范围。,数据精度是指一个数的有效位数。,2.5 浮点数据表示,2.5.1 浮点数,2.5 浮点数据表示,2.5.1 浮点数,规格化,为了在尾数中表示最多的有效数据位,同时使浮点数具有唯一的表示形式,尾数应当采用规格化表示方法,即尾数用纯小数形式给出,而且尾数绝对值应大于1/R,即小数点后第一位不为0。,规格化后正尾数的形式为:0.1XXXX 负尾数的形式为:1.0XXXX,2.5 浮点数据表示,2.5.1 浮点数,规格化,对于非规格化浮点数,进行规格

47、化形式,其方式:将尾数M左移或右移,并修改阶码值。尾数左移1位,阶码值减1;尾数右移1位,阶码值加1。,例:将0.0011和-0.0011规格化表示。,解:0.0011=0.001120=0.1100 20-2 -0.0011补=1.1101 -0.0011的浮点表示为:,2.5 浮点数据表示,2.5.1 浮点数,规格化,例:设浮点表示中,E=4、M补=0.1000B,分别求出当R=2或R=16时表示的数值的大小?,解:当R=2时: N=MRE=0.1000B 24=0.5 24=8 当R=16时: N=MRE=0.1000B 164=0.5 164=32768,2.5 浮点数据表示,2.5.

48、1 浮点数,Ms 是尾数的符号位, 设置在最高位上。 Ms=0表示正号; Ms=1表示负号。,M为尾数, 有m位, 由Ms和M组成一个定点数。,E 为阶码, 有n+1位,在E的最高位设为符号位, 以表示正阶和负阶。,浮点数的机内表示形式:,2.5 浮点数据表示,2.5.1 浮点数,例:设某浮点数共12位。其中阶码含1位阶符共4位,以2为底,补码表示;尾数含1位数符共8位,补码表示,规格化。则该浮点数所能表示的最大正数是 ?,浮点数的机内表示形式:,127,例:将十进制数表示成浮点规格化数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示。,2.5.2 IEEE 754标

49、准,浮点数的机内表示形式:,2.5 浮点数据表示,1、24/5122、24/512,1、24/512=0.11000*2-4 阶码用补码表示:0 1100 11000 阶码用移码表示:0 0100 11000,2、- 24/512= - 0.11000*2-4 阶码用补码表示:1 1100 01000 阶码用移码表示:1 0100 01000,2.5.2 IEEE 754标准,浮点数据编码的标准是IEEE 754标准,尾数通常采用补码形式,阶码的编码可采用原码、反码、补码和移码进行编码。,浮点数的机内表示形式:,2.5 浮点数据表示,32位单精度浮点数,:含阶符的阶码,8 位 阶码采用移码方式

50、来表示正负指数,:1位符号位 0表示正数 1表示负数,:尾数,23位小数表示,小数点放在尾数域最前面,IEEE 754标准,64位双精度浮点数,:含阶符的阶码,11位,:1位符号位,:尾数,52位小数,IEEE 754标准,尾数最高有效位为1,隐藏,并且隐藏在小数点的左边(即:1M2) 32位单精度浮点数规格化表示 (-1)s(1.) 2E-127 e127(e127) 64位双精度浮点数规格化表示 (-1)s (1.) 2E-1023 e1023(e1023),指数真值e 用移码形式表示为阶码,规格化表示原则,IEEE 754标准,2.5.2 IEEE 754标准,2.5 浮点数据表示, X

51、(-1)s1.M2e (1.011011)23 1011.011(11.375)10, 指数e阶码127 1000 001001111111 00000011=(3)10, 包括隐藏位1的尾数1.M 1.011011,例:浮点机器数 (41360000)16,求真值,例:真值20.59375,求32位单精度浮点数, 分别将整数和分数部分转换成二进制数 20.5937510100.10011, 移动小数点,使其在第1、2位之间,10100.100111.01001001124,e4,S0,E4+12713110000011,M010010011, 得到32位浮点数的二进制存储格式为:,0 100

52、 0001 1010 0100 1100 0000 0000 0000 (41A4C000)16,例:将十进制数178.125表示成微机中的单精度浮点数,解:178.125=10110010.001B =1.011001000127 指数E=7+127=134=10000110B 127是单精度浮点数应加的指数偏移量,其完 整的浮点数形式为 : 0 10000110 011 0010 0010 0000 0000 0000 = 43322000H,例:将下面Pentium机中的单精度浮点数表示成 十进制真值是多少? 即 3F580000H=0011 ,1111,0101,1000,0000,0

53、000,0000,0000B,数符:S0 (正号) 阶码: E=(01111110)2-127=126-127= -1 尾数: D=(1.1011)2 X= 1.10112-1= (0.11011)2=0.84375,2.5.2 IEEE 754标准,浮点数的特点,2.5 浮点数据表示,浮点数的表示范围取决于阶码的位数,相对精度取决于尾数的位数。 同一个浮点数的表示不是惟一的。 如果一个浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零。,将十进制数+76.75存入某微机中,写出在微机中的单精度浮点形式。,练

54、习,解:表示成规格化二进制真值格式为 +76.75=+1001100.11B=+1.0011 00112+110 表示成规格化尾数格式为:(将整数位的1隐含) +1.0011 0011=0 0011 0011 (橙色0为尾数符号) 计算出阶码为 110+0111 1111=1000 0101 该数的短浮点数格式为 0100 0010 1001 1001 1000 0000 0000 0000 = 42998000H,某微机内存有单精度符点数为C2308000H,计算其真值。,练习,设两浮点数X,Y实现 运算,其中: 均为规格化数。 执行下面五步完成运算。 1.“对阶”使两数阶码相等(对齐两数的

55、小数点) 要对阶,首先求出两数阶码EX和EY之差,即 若0,表示两数阶码相等,即EXEY。 若0,表示EXEY 若0,表示EXEY 当EXEY时,要通过尾数的移位来改变EX或EY,使之相等。,2.6 浮点数的运算方法,2.6.1 浮点加减运算,对阶的规则:是小阶向大阶看齐(使得误差很小),若EXEY,不需对阶。 若EXEY,则MY右移,每右移1位,EY1EY,直至EXEY为止。 若EXEY,则MX右移,每右移1位,EX1EX,直至EXEY为止。 尾数右移后,应对尾数进行舍入。,2.尾数加/减,2.6 浮点数的运算方法,2.6.1 浮点加减运算,规则: (1)如果结果两个符号位的值不同,表示尾数

56、结果溢出,将尾数右移1位,阶码E1,称为“向右规格化”,简称“右规”。 (2)如果结果两个符号位的值相同,表示尾数结果不溢出。但若最高数值位与符号位相同,此时尾数连续左移,直到最高数值位与符号位的值不同为止。同时从E中减去移位的位数,这称之为“向左规格化”,简称“左规”。,3.结果规格化(尾数用双符号位补码表示),2.6 浮点数的运算方法,2.6.1 浮点加减运算,右规或对阶时尾数低位上的数值会移掉,使数值精度受影响,常用“0”舍“1”入法。当移掉的最高位为1时,在尾数的末位加1,如果加1后又使尾数溢出,则要进行右规。,4.舍入,5.检查阶码是否溢出,阶码下溢,则置结果为机器零。若上溢,则置溢

57、出标志。,2.6 浮点数的运算方法,2.6.1 浮点加减运算,例: 两浮点数相加,求X+Y。 已知:X2010 0.11011011, y2100 (-0.10101100) 计算过程:,解:X和Y在机器中的浮点补码表示形式为(双符号位): 阶符 阶码 数符 尾数 X: 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1 Y: 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0,(1)对阶操作 阶差EEx补+-EY补=00010+11100=11110 X阶码小,Mx右移2位,保留阶码E00100。 Mx补=00 00 110 110 11 下划线上的数是右移出去而保留的附加位。,(2)尾数相加 Mx补+MY补=000011011011+1101010100=111000101011。,(3)规格化操作 左规,移1位,结果:1100010101 10;阶码-1,E00011。,(4)舍入 附加位最高位为1,在所得结果的最低位+1。 得新结果: M补=1100010110, M: - 011101010。,(5)判溢出 阶码符号位为00,故不溢出。 最

温馨提示

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

评论

0/150

提交评论