软件工程-03运算方法和运算部件_第1页
软件工程-03运算方法和运算部件_第2页
软件工程-03运算方法和运算部件_第3页
软件工程-03运算方法和运算部件_第4页
软件工程-03运算方法和运算部件_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 运算方法和运算部件不同层次程序员看到的运算及ALU定点数运算及其运算部件浮点数运算及其运算部件3.1 高级语言和机器指令中的运算C语言程序中涉及的运算整数算术运算、浮点数算术运算按位、逻辑、移位、位扩展和位截断指令集中与运算相关的指令( 以MIPS为参考 )涉及到的定点数运算算术运算带符号整数运算:取负 / 符号扩展 / 加 / 减 / 乘 / 除 / 算术移位无符号整数运算:0扩展 / 加 / 减 / 乘 / 除 逻辑运算逻辑操作:与 / 或 / 非 / 移位操作:逻辑左移 / 逻辑右移涉及到的浮点数运算:加、减、乘、除一、移位运算1. 移位的意义15 米 = 1500 厘米 小数点

2、右移 2 位机器用语15 相对于小数点 左移 2 位( 小数点不动 ).左移 绝对值扩大右移 绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算2. 算术移位规则1右移 添 1左移 添 00反 码补 码原 码负数0原码、补码、反码正数添补代码码 制符号位不变例3.1 设机器数字长为 8 位(含一位符号位),写出A = 26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A = 26 61,0000110 131,0001101 1041,1101000 521,0110100 261,0011010移位前对应的真值机 器 数移位操作1212原码= 1101

3、0 61,1111001 131,1110010 1041,0010111 521,1001011 261,1100101移位前对应的真值机 器 数移位操作1212 71,1111001 131,1110011 1041,0011000 521,1001100 261,1100110移位前对应的真值机 器 数移位操作1212补码反码3. 算术移位的硬件实现(a)真值为正 (b)负数的原码(c)负数的补码(d)负数的反码000100丢 1丢 1出错影响精度出错影响精度正确影响精度正确正确4. 算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添 0,高位移丢

4、高位添 0,低位移丢例如 11010011逻辑左移10100110逻辑右移01011001算术左移算术右移1010011011011001(补码)00101100103.2 基本运算部件一、ALU 电路组合逻辑电路 Ki 不同取值 Fi 不同四位 ALU 74181M = 0 算术运算M = 1 逻辑运算S3 S0 不同取值,可做不同运算ALUAiBiFiKi1 基本的二进制加法器一位加法电路 一位半加器(不考虑进位) 一位全加器(考虑进位) Ci=XiYi + (Xi+Yi )Ci-1Fi=XiYiXiYiHAFi=XiYi Ci-1Ci-1XiYiCiFA=Gi + PiCi-1Gi=Xi

5、Yi进位产生函数Pi= Xi+Yi进位传递函数2串行进位加法器 C3F0C-1X0Y0FAF1C0X1Y1FAF2C1X2Y2FAF3C2X3Y3FA进位信号串行传送速度慢 C0 = G0 + P0C-1 C1 = G1 + P1C0C2 = G2 + P2C1C3 = G3 + P3C2= G0 P0C-1设与非门的级延迟时间为ty 4 位 全加器产生进位的全部时间为 8ty&C3P3P2P1P0C2C1C0C-1G3G2G1G0Gi=XiYiPi= Xi+Yi3超前进位产生电路 C0 = G0 + P0C-1 C1 = G1 + P1C0 C2 = G2 + P2C1C3 = G3 + P

6、3C2 = G1 + P1G0 + P1P0C-1 = G2 + P2G1 + P2P1G0 + P2P1P0C-1 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C-1 用与或非门实现1 & &1 &1 &1 &C-1G3P3G2P2G1P1G0P0 11 1 1C0C1C2C3CnCn+zCn+yCn+x=G+PC-14.超前进位芯片 74182116G1G0G3G2P0P1P3P2Cn+zCnCn+xCn+yVCGNDPGC0C1C2C-1S25一位ALU的结构原理 运算方式选择 S1S0=00 Zi=XiYiS1S0=01 Zi=XiYiS1S0=

7、10 Zi=FA的输出S2=0S2=1实现何种运算?64位ALU SN74181 两种工作方式:正逻辑和负逻辑 Cn+4CnX3X0X1X2Y0Y1Y2Y3=1逻辑运算01111Cn+4CnX3X0X1X2Y0Y1Y2Y3=0算术运算1C2C1C0Cn低电平有效74181的算术/逻辑运算功能(正逻辑方式) 7用SN74181 实现不同位数的ALU 16位ALU片间串行进位Cn+4CnCnCn+4CnCn+4CnCn+4CnCn+16片间并行进位Cn181Cn+x P0 G0181Cn+y P1 G1181P3 G3P G182181Cn+z P2 G2 64位ALUCnCn+x P0 G0P3

8、 G3P G182Cn181Cn+x P0G0181P3 G3P G182Cn+z181Cn+x P0G0181P3 G3P G1823.3 定点数运算加/减运算及其运算部件 补码 加减运算乘法运算及其运算部件原码 / 补码 乘法运算除法运算及其运算部件原码 / 补码 除法运算一、加减法运算1. 补码加减运算公式(1) 加法 (2) 减法 整数 A补 + B补= A+B补(mod 2n+1)小数 A补 + B补= A+B补(mod 2)AB= A+(B )整数 A B补= A+(B )补= A补 + B补(mod 2n+1)小数 A B补= A+(B )补(mod 2)连同符号位一起相加,符号

9、位产生的进位自然丢掉= A补 + B补证明 设A0, B0BA ( A+B 0 )A+B补=2+A+B=A+2+B=A补+B补B A ( A+B 0 )A+B补=A+B=A +2 +B(mod 2)=A补+B补例3.2 解:已知 y补 求 y补 y补 = 0. y1 y2 yny = 0. y1 y2 yny = 0. y1 y2 yn y补 = 1.y1 y2 yn + 2-n y补 = 1. y1 y2 yn y原 = 1.y1 y2 yn + 2-n y = (0. y1 y2 yn + 2-n) y = 0. y1 y2 yn + 2-n y补 = 0. y1 y2 yn + 2-n设

10、 y补 = y0. y1 y2 yn每位取反,即得 y补y补连同符号位在内,末位加 1每位取反,即得 y补y补连同符号位在内,末位加 12. 举例解:A补B补A补 + B补+= 0 . 1 0 1 1= 1 . 1 0 1 1= 1 0 . 0 1 1 0= A + B补验证例 3.3设 A = 0.1011,B = 0.0101求 A + B补0.1011 0.01010.0110 A + B = 0 . 0 1 1 0A补B补A补 + B补+= 1 , 0 1 1 1= 1 , 1 0 1 1= 1 1 , 0 0 1 0= A + B补验证 1001 1110 0101+例 3.4设 A

11、 = 9,B = 5 求 A+B补解: A + B = 1110例 3.5设机器数字长为 8 位(含 1 位符号位)且 A = 15, B = 24,用补码求 A B解:A = 15 = 0001111B = 24= 0011000A补 + B补+A补= 0, 0001111 B补= 1, 1101000= 1, 1110111= A B补B补 = 0, 0011000 A B = 1001 = 9例 3.6解:x= 0.1001y=0.1011x补 + y补+x补= 0.1001 y补= 0.1011= 1.0100设 x = 9/16 y =11/16 用补码求 x+yx + y = 0.

12、1100 =1216同理 设机器数字长为 8 位(含 1 位符号位) 且 A = 97,B = +41,用补码求 A BA B = + 1110110 = + 118错错大于1溢出3. 溢出判断(1) 一位符号位判溢出参加操作的 两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出硬件实现最高有效位的进位 符号位的进位 = 1如1 0 = 10 1 = 1有 溢出0 0 = 01 1 = 0无 溢出溢出两数符号不同? -7- 6 = -7 + (-6) -3 - 5 = - 3 + (- 5)0111+00111100111010001000111

13、111溢出现象:(1) 最高位和次高位的进位不同 (2) 和的符号位和加数的符号位不同X= +3= - 8(2) 两位符号位判溢出x补 = x 1 x 0 4 + x 0 x 1(mod 4)x补 + y补 = x + y 补 (mod 4)x y补 = x补 + y补 (mod 4)存储时仍然是一位符号位,运算时扩充为两位 -7- 6 = -7 + (-6) -3 - 5 = - 3 + (- 5)11+0011110011101000100011X= +3= - 8111111结果的双符号位 相同 未溢出结果的双符号位 不同 溢出最高符号位 代表其 真正的符号00. 11. 10, 01,

14、 4. 补码加减法的硬件配置ALUnnnAResultZeroCarryInCarryOutnBn01MuxSelSubBoverflow补码加减运算部件二、原码加/减运算用于浮点数尾数运算符号位和数值部分分开处理仅对数值部分进行加减运算符号位起判断和控制作用运算规则:比较两数符号,对加法实行“同号求和,异号求差”, 对减法实行“异号求和,同号求差”。求和:数值位相加,若最高位产生进位,则结果溢出。和的符号取被加数(被减数)的符号。求差:被加数(被减数)加上加数(减数)的补码。最高数值位产生进位表明加法结果为正,所得数值位正确。最高数值位没产生进位表明加法结果为负,得到的是数值位的补码形式,需

15、对结果求补,还原为绝对值形式的数值位。差的符号位: a)情况下,符号位取被加数(被减数)的符号; b)情况下,符号位为被加数(被减数)的符号取反。三、移码加/减运算用于浮点数阶码运算符号位和数值部分可以一起处理移码运算规则x移 + y补= x + y移 (mod 2n1 )x移 + y补= x y移 (mod 2n1 )移码和补码的数值位相同、符号位相反证明x移 = 2n + x(2nx 2n)x移 + y移 = 2n + x + 2n +y = 2n + (2n + x +y)= 2n + x + y移 又: y补 = 2n1 +y x移 + y补 = 2n + x + 2n1 +y = 2

16、n1 + x + y移 = x + y移 (mod 2n1 )同理有x移 + y补= x y移 为防止溢出,采用双符号位的阶码加法器规定:移码的最高符号位恒用 “ 0 ”参加运算结果符号:00011011?正常正负上溢下溢例: x= 011 y=110 求xy移 x移 01,011 y补 00,110 y补 11,010 x+y移 x移 + y补 01,011+ 00,11000101 (mod 25,3 )10,001 (上溢, 9)x-y移 x移 + -y补 01,011+ 11,0101. 分析笔算乘法A = 0.1101 B = 0.1011AB = 0.100011110 . 1 1

17、 0 10 . 1 0 1 11 1 0 11 1 0 10 0 0 01 1 0 10 . 1 0 0 0 1 1 1 1符号位单独处理乘数的某一位决定是否加被乘数 4个位积一起相加乘积的位数扩大一倍乘积的符号心算求得 ?四、乘法运算= A (0.1 + 0.00 + 0.001 +0.0001)2. 笔算乘法改进A B = A 0.1011= 0.1A + 0.00A + 0.001A +0.0001A= 0.1A + 0.00A + 0.001(1 A +0.1A)= 0.1A + 0.010 A + 0. 1(1 A +0.1A)= 0.11 A +0.1 0 A+0.1(1 A +

18、0.1A)= 2-11 A +2-10 A+2-1(1 A + 2-1(1 A+0)第一步 被乘数A + 0第二步 1,得新的部分积第八步 1,得结果第三步 部分积 + 被乘数右移一位3. 改进后的笔算乘法过程(竖式)0 . 0 0 0 00 . 1 1 0 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 00 . 1 1 0 1初态,部分积 = 0乘数为 1,加被乘数乘数为 1,加被乘数乘数为 0,加 01 . 0 0 1 110 . 1 0 0 11 11 . 0 0 0 11 1 1乘数为 1,加 被乘数 0 . 1 0 0 01 1 1 11,得结果1 0 1 1=0

19、 . 0 1 1 01,形成新的部分积1 1 0 1=0 . 1 0 0 11,形成新的部分积1 1 1 0=0 . 0 1 0 01,形成新的部分积1 1 1 1= 部 分 积 乘 数 说 明小结 被乘数只与部分积的高位相加 由乘数的末位决定被乘数是否与原部分积相加, 然后 1 形成新的部分积,同时 乘数 1(末 位移丢),空出高位存放部分积的低位。硬件3个寄存器,具有移位功能一个全加器 乘法 运算 加和移位。n = 4,加 4 次,移 4 次(1) 原码一位乘运算规则以小数为例设x原 = x0.x1x2 xn y原 = y0.y1y2 yn= (x0 y0). x*y*x y原 = (x0

20、 y0).(0.x1x2 xn)(0.y1y2 yn)式中 x*= 0.x1x2 xn 为 x 的绝对值 y*= 0.y1y2 yn 为 y 的绝对值 乘积的符号位单独处理 x0 y0数值部分为绝对值相乘 x* y*4. 原码乘法(2) 原码一位乘递推公式x* y* = x*(0.y1y2 yn)= x*(y12-1+y22-2+ + yn2-n)= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ) )p1pnp0 = 0p1 = 2-1(ynx*+p0)p2 = 2-1(yn-1x*+p1)pn = 2-1(y1x*+pn-1)p0例3.7已知 x = 0.1110 y

21、= 0.1101 求x y原解:数值部分的运算0 . 0 0 0 00 . 1 1 1 00 . 1 1 1 00 . 0 0 0 00 . 1 1 1 00 . 1 1 1 0部分积 初态 p0 = 0 部 分 积 乘 数 说 明0 . 0 1 1 101 . 0 0 0 11 01 . 0 1 1 01 1 00 . 1 0 1 10 1 1 01,得 p4逻辑右移逻辑右移1 1 0 1=0 . 0 1 1 11,得 p0 1 1 0=0 . 0 0 1 11,得 p21 0 1 1=0 . 1 0 0 01,得 p31 1 0 1= 数值部分按绝对值相乘 乘积的符号位 x0 y0 = 1

22、 0 = 1x* y* = 0. 1 0 1 1 0 1 1 0则 x y原 = 1. 1 0 1 1 0 1 1 0特点绝对值运算逻辑移位例3.7 结果用移位的次数判断乘法是否结束(3) 原码一位乘的硬件配置X、Y、P 均 n+1 位移位和加受末位乘数控制写使能控制逻辑右移32位 ALU被乘数寄存器X乘积寄存器P3264 位323232加计数器Cn时钟C乘数寄存器Y(4) 原码两位乘原码乘符号位 和 数值位 部分 分开运算两位乘每次用 乘数的 2 位判断 原部分积是否加 和 如何加 被乘数1 11 00 10 0新的部分积乘数yn-1 yn加 “0” 2加 1 倍的被乘数 2加 2 倍的被乘

23、数 2加 3 倍的被乘数 23 ?先 减 1 倍 的被乘数再 加 4 倍 的被乘数4 13100 0111(5) 原码两位乘运算规则11 111 010 110 001 101 000 100 0 操 作 内 容标志位Tj乘数判断位yn-1yn p 2, y* 2, Tj 保持“0” p 2, y* 2, Tj 保持“1”px* 2, y* 2, Tj 保持“1” p+2x* 2, y* 2, Tj 保持“0”p+x* 2, y* 2, Tj 保持“0”共有操作 +x* +2x* x* 2实际操作 +x*补 +2x*补 +x* 补 2 补码移 px* 2, y* 2, 置“1” Tjp+2x*

24、 2, y* 2, 置“0” Tj p+x* 2, y* 2, 置“0” Tj例3.8已知 x = 0.111111 y = 0.111001 求xy原0 0 0 . 0 0 0 0 0 00 0 0 . 1 1 1 1 1 10 0 0 . 1 1 1 1 1 10 0 . 1 1 1 0 0 10初态 p0 = 0+ x*, T0 = 00 1 0 . 0 0 1 1 0 11 10 0 0 . 1 1 1 0 0 00 0 0 1 1 1 1 1 1 . 1 0 0 1 0 00 1 1 1 0 0 1 . 1 1 1 1 1 0+ 2x*,T1 = 01 1 1 . 0 0 0 0 0

25、 1 x*, T2 = 10 0 0 . 1 1 1 1 1 1+ x*, T3 = 000 0 0 . 0 0 1 1 1 11 1 0 0 1 1 1 0200 0 0 . 1 0 0 0 1 10 1 1 1 0 0 1 1211 1 1 . 1 1 1 0 0 1 0 0 0 1 1 1 0 02Tj部 分 积 乘 数 说 明补码右移补码右移解:数值部分的运算 数值部分的运算 乘积的符号位 x0 y0 = 0 1 = 1x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1则 x y原 = 1. 1 1 1 0 0 0 0 0 0 1 1 1例3.8 结果特点绝对值的补码

26、运算算术移位用移位的次数判断乘法是否结束(6) 原码两位乘和原码一位乘比较符号位操作数移位移位次数最多加法次数x0 y0 x0 y0绝对值绝对值的补码逻辑右移算术右移nnn2(n为偶数)n2+1(n为偶数)思考 n 为奇数时,原码两位乘 移 ?次最多加 ?次原码一位乘原码两位乘设 被乘数乘数x补 = x0.x1x2 xny补 = y0.y1y2 yn准备知识(以小数为例)2-1 x补 = x0. x0 x1x2 xn = 2-1 x补 0.110补=1.010 2-1 ( 0.110)补= 0.0110补= 1.1010y = y补 2y0 y0.y1y2 yn 2y0 0.y1y2 yn y

27、0y为正时y0 0y为负时y0 1算术移1位五、 补码乘法(1) 补码一位乘运算规则 校正法x y补= x ( 0.y1 yn y0)补= x (y1 2-1+y22-2+ +yn2-n y0 )补 = x补(y1 2-1+y22-2+ +yn2-n) x补 y0用校正法求x y补是用x补乘以 y补的数值位,最后再根据y补的符号y0做一次校正y为负,加 x补 y为正,不加= x (y1 2-1+y22-2+ +yn2-n )x y0补 已知x补和y补求x y补和原码一位乘法相同,部分积右移时采用算术移位Booth 算法(被乘数、乘数符号任意)设x补 = x0.x1x2 xn y补 = y0.y

28、1y2 ynx y补= x补( 0.y1 yn ) x补 y0= x补(y1 2-1+y22-2+ +yn2-n) x补 y0= x补(y0+y1 2-1+y22-2+ +yn2-n)= x补y0+(y1 y12-1)+(y22-1y22-2)+ +(yn2-(n-1)yn2-n) = x补(y1y0)+(y2y1)2-1+ +(ynyn-1)2-(n-1)+(0 yn)2-n) y1 2-1 + + yn 2-nx补= +x补 2-1 = 20 2-12-2 = 2-1 2-22-12-2= x补(y1y0)+(y2y1)2-1+ +(yn+1yn)2-n 附加位 yn+1Booth 算法递

29、推公式p0补= 0p1补= 2-1(yn+1yn)x补+p0补 yn+1 = 0pn补= 2-1(y2y1)x补+pn-1补x y补= pn补+(y1y0)x补最后一步不移位如何实现 yi+1yi ?0 00 11 01 11+x补 1+x补 11yi yi+1操作yi+1yi 0 1 -1 0 例3.9已知 x = +0.0011 y = 0.1011 求xy补解:0 0 . 0 0 0 01 1 . 1 1 0 11 1 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 11 . 0 1 0 100 0 . 0 0

30、0 111 1 . 1 1 0 11 10 0 . 0 0 0 11 1 11 1 . 1 1 0 11 1 1 1 x补 = 0.0011y补 = 1.0101x补 = 1.1101+x补 1 1 . 1 1 1 0 1 1 0 1 0 11+x补0 0 . 0 0 0 01 1 1 0 101+x补1 1 . 1 1 1 01 1 1 1 0110 0 . 0 0 0 0 1 1 1 1 101+x补+x补 xy补 =1.11011111 最后一步不移位 算术移位1 11 (2) Booth 算法的硬件配置P、X、Y 均 n + 2 位移位和加受末两位乘数控制写使能控制逻辑右移32位 AL

31、U被乘数寄存器X乘积寄存器P3264 位323232加计数器Cn时钟C乘数寄存器Y减Booths 算法实质当前位右边位操作Example10减被乘数000111100011加0 (不操作)000111100001加被乘数000111100000加0 (不操作) 0001111000 在“1串”中,第一个1时做减法,最后一个1做加法, 其余情况只要移位。最初提出这种想法是因为在Booth的机器上 移位操作比加法更快!0 1 1 1 1 0beginning of runend of runmiddle of run(3) 补码两位乘(略)操 作 内 容乘数判断位yn-1ynyn1000pi+1补

32、= 2-2pi补pi+1补= 2-2 pi补+ x补pi+1补= 2-2 pi补+ x补pi+1补= 2-2 pi补+ 2x补pi+1补= 2-2 pi补+2 -x补pi+1补= 2-2 pi补+ -x补pi+1补= 2-2 pi补+ -x补pi+1补= 2-2pi补001010011100101110111六、快速乘法器设计快速乘法部件的必要性:大约1/3是乘法运算 快速乘法器的实现流水线方式硬件叠加方式(如:阵列乘法器)阵列乘法器用一个实现特定功能的组合逻辑单元构成一个阵列 乘法小结 原码乘 符号位 单独处理 补码乘 符号位 自然形成 原码乘去掉符号位运算 即为无符号数乘法 不同的乘法运算

33、需有不同的硬件支持 整数乘法与小数乘法完全相同 可用 逗号 代替小数点1. 分析笔算除法x = 0.1011 y = 0.1101 求 xy0 . 1 0 1 10 . 1 1 0 10 . 0 1 1 0 10 . 0 1 0 0 10 . 0 0 1 1 0 10 . 0 0 0 1 0 10 . 0 0 0 0 1 1 0 10 . 0 0 0 0 0 1 1 1 1商符单独处理心算上商余数不动低位补“0”减右移一位的除数上商位置不固定xy = 0. 1 1 0 1余数 0. 0 0 0 0 0 1 1 1商符心算求得00.101000 ?七、原码除法运算2. 笔算除法和机器除法的比较笔

34、算除法 机器除法商符单独处理心算上商符号位异或形成| x | | y | 0 上商 1| x | | y | 0 上商 0余数 不动 低位补“0”减右移一位 的除数2 倍字长加法器上商位置 不固定余数 左移一位 低位补“0”减 除数1 倍字长加法器在寄存器 最末位上商3. 原码除法(以小数为例)x0原 = x0.x1x2 xny0原 = y0.y1y2 yn式中 x* = 0.x1x2 xn 为 x 的绝对值 y* = 0.y1y2 yn 为 y 的绝对值数值部分为绝对值相除x*y*被除数不等于 0除数不能为 0小数定点除法 x* y*整数定点除法 x* y*商的符号位单独处理 x0 y0 原

35、 = (x0 y0).xyx*y*约定(1) 恢复余数法0 . 1 0 1 11 . 0 0 1 11 . 0 0 1 11 . 0 0 1 10 . 0 0 0 0+ y*补01 . 1 1 1 0余数为负,上商 00 . 1 1 0 1恢复余数00 . 1 0 0 1余数为正,上商 1+ y*补1 . 0 1 1 0011 . 0 0 1 00 11+y*补解:被除数(余数) 商 说 明x原 = 1.1011 y原 = 1.1101 x0 y0 = 1 1 = 0 x = 0.1011 y = 0.1101求 原 xy例3.1010 . 1 0 1 1恢复后的余数0+y*补y*补 = 0.

36、1101 y*补 = 1.0011逻辑左移逻辑左移0 . 0 1 0 10 1余数为正,上商 1被除数(余数) 商 说 明1 . 0 0 1 10 . 1 1 0 11 . 0 0 1 110 . 1 0 1 00 1 1+ y*补1 . 1 1 0 10 1 1 余数为负,上商 0恢复余数1 . 0 1 0 00 1 1 01+ y*补0 . 0 1 1 10 1 1 0 余数为正,上商 1= 0.1101x*y* 原xy= 0.1101上商 5 次第一次上商判溢出余数为正 上商 1余数为负 上商 0,恢复余数移 4 次100 . 1 0 1 0恢复后的余数0 1 1 01+y*补逻辑左移余

37、数 Ri0 上商 “1”, Ri 1 2Ri y* 余数 Ri0 上商 “0”, Ri + y* 恢复余数 Ri 1 2( Ri+y*) y* = 2Ri + y* 加减交替 恢复余数法运算规则 不恢复余数法运算规则Ri0 上商“1” Ri 1 2Ri y* Ri0 上商“0” Ri 1 2Ri + y* (2)不恢复余数法 (加减交替法)x = 0.1011 y = 0.1101 求 原xy解:例3.110 . 1 0 1 11 . 0 0 1 10 . 1 1 0 11 . 0 0 1 11 . 0 0 1 10 . 1 1 0 10 . 0 0 0 0+ y*补01 . 1 1 1 0余

38、数为负,上商 01 . 1 1 0 001+y*补00 . 1 0 0 1余数为正,上商 1+ y*补1 . 0 0 1 00 11+ y*补+y*补0 . 1 0 1 00 1 111 . 1 0 1 00 1 1 010 . 0 1 0 10 1余数为正,上商 10 . 0 1 1 10 1 1 0 余数为正,上商 1 1 . 1 1 0 10 1 1余数为负,上商 0 x原 = 1.1011y*补 = 0.1101y*补 = 1.0011y原 = 1.11011101逻辑左移第一步x0 y0 = 1 1 = 0 x*/ y* = 0.1101 x*/ y* 原 = 0.1101上商 n+

39、1 次例3.11 结果特点用移位的次数判断除法是否结束第一次上商判溢出移 n 次,加 n+1 次(3) 原码加减交替除法硬件配置余数寄存器R:初始时高位部分为高32位被除数;结束时是余数。余数/商寄存器Q:初始时为低32位被除数;结束时是32位商。定点整数相除:在被除数的高位添n个0定点小数相除:在被除数的低位添n个0Ri补= 0.1000 x补 = 1.1101 y补 = 1.0101(1) 商值的确定x = 0.1011y = 0.0011 x补 = 0.1011 y补 = 0.0011x补 = 0.1011y补 = 1.1101Ri补= 0.1000 x = 0.0011y = 0.10

40、11x补 = 1.1101y补 = 0.1011x*y*Ri补与y补同号“够减”x*y*Ri补与y补异号“不够减”+ 比较被除数和除数绝对值的大小 x 与 y 同号用减法4. 补码除法x补和y补求 Ri补Ri补与 y补同号异号x补 y补x补+ y补同号,“够减”异号,“够减”小结x = 0.1011y = 0.0011 x补 = 0.1011 y补 = 1.1101x补 = 0.1011y补 = 1.1101Ri补= 0.1000 x = 0.0011y = 0.1011 x补 = 1.1101 y补 = 0.1011x补 = 1.1101y补 = 0.1011Ri补= 0.1000 x*y*

41、Ri补与y补异号“够减”x*y*Ri补与y补同号“不够减”+ x 与 y 异号用加法 商值的确定x补与 y补同号正商按原码上商“够减”上“1”“不够减”上“0”x补与 y补异号负商按反码上商“够减”上“0”“不够减”上“1”Ri补与y补商值同 号异 号100 .原码1. 11 .反码1. 1末位恒置“1”法x补与 y补商Ri补与 y补商 值够减不够减够减不够减同 号异 号正负1001原码上商反码上商小 结简 化 为(同号)(异号)(异号)(同号)(2) 商符的形成 除法过程中自然形成x补和y补同号x补y补比较Ri补和y补同号(够)“1”异号(不够)“0”原码上商小数除法 第一次“不够”上“0”

42、正商x补和y补异号x补+y补比较Ri补和y补异号(够)“0”同号(不够)“1”反码上商小数除法 第一次“不够”上“1”负商(3) 新余数的形成Ri补和 y补商新余数同 号异 号102Ri补 + y补2Ri补 + y 补加减交替例3.12设 x = 0.1011 y = 0.1101 求 并还原成真值 补xy解:x补 = 1.0101 y补 = 0.1101 y补 = 1.00111 . 0 1 0 10 . 1 1 0 11 . 0 0 1 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 0异号做加法10 . 0 0 1 0同号上“1”1 . 0 1 1 11 异号上“0”+

43、y补1 . 1 0 1 11 0 异号上“0”+y补0 . 0 0 1 11 0 0同号上“1”0 . 0 1 0 0110 . 1 1 1 01 011 . 0 1 1 01 0 01末位恒置“1”0 . 0 1 1 01 0 0 1 1 补= 1.0011xy0011+y补xy= 0.1101则逻辑左移(4) 小结 补码除法共上商 n +1 次(末位恒置 1) 第一次为商符 加 n 次 移 n 次 第一次商可判溢出 精度误差最大为 2-n整数被除数经符号扩展后成2n位逻辑左移3.4 浮点四则运算一、浮点加减运算x = Sx 2jxy = Sy 2jy1. 对阶(1) 求阶差(2) 对阶原则

44、j = jx jy = jx= jy 已对齐jx jy jx jy x 向 y 看齐y 向 x 看齐x 向 y 看齐y 向 x 看齐小阶向大阶看齐Sx 1, Sy 1, Sx 1, Sy 1, = 0 0 0 jx1jy+1 jx+1jy1为什么?例如x = 0.1101 201 y = (0.1010) 211求 x + y解:x补 = 00, 01; 00.1101 y补 = 00, 11; 11.0110 1. 对阶j补 = jx补 jy补= 00, 0111, 0111, 10阶差为负( 2)Sx 补= 00.0011 Sy补= 11.011011.1001 Sx 2 jx+ 2 x+

45、y补 = 00, 11; 11. 1001 对阶x补= 00, 11; 00.0011+对阶后的Sx补 求阶差2. 尾数求和3. 规格化(1) 规格化数的定义(2) 规格化数的判断r = 2 |S| 1 12S0真值原码补码反码规格化形式S 0规格化形式真值原码补码反码0.1 0.1 0.1 0.1 原码 不论正数、负数,第一数位为1补码 符号位和第 1 数位不同 0.1 1.1 1.0 1.0 特例S = = 0.100 0 12 12 补 不是规格化的数S = 1 1补 是规格化的数S原 = 1 . 1 0 0 0S补 = 1 . 1 0 0 0S补 = 1 . 0 0 0 0 机器判别方

46、便(3) 左规(4) 右规尾数 1,阶码减 1,直到数符和第一数位不同为止 上例 x+y补 = 00, 11; 11. 1001左规后 x+y补 = 00, 10; 11. 0010 x + y = ( 0.1110)210 当 尾数溢出( 1)时,需 右规即尾数出现 01. 或 10. 时尾数 1,阶码加 1例3.12x = 0.1101 210 y = 0.1011 201求 x +y(除阶符、数符外,阶码取 3 位,尾数取 6 位) 解:x补 = 00, 010; 00. 110100y补 = 00, 001; 00. 101100 对阶 尾数求和j补 = jx补 jy补 = 00, 0

47、10 11, 111100, 001阶差为 +1 Sy 1, jy+1 y补 = 00, 010; 00. 010110Sx补 = 00. 110100Sy补 = 00. 010110对阶后的Sy补01. 001010+尾数溢出需右规 右规x +y补 = 00, 010; 01. 001010 x +y补 = 00, 011; 00. 100101右规后 x +y = 0. 100101 2114. 舍入在 对阶 和 右规 过程中,可能出现 尾数末位丢失引起误差,需考虑舍入(1) 0 舍 1 入法 尾数为补码时,0舍1入法修正为:多余位置的最高位为1,以下各位不全为0时,入1,其它情况,舍去。

48、 尾数为原码时,多余位的最高位为1,入1否则,舍去。(4) IEEE754舍入模式(P114,自学)(2) 恒置 “1” 法(1) 0 舍 1 入法 (3) 截断 法例 3.13x = ( )2-5 y = () 2-4 5878求 x y(除阶符、数符外,阶码取 3 位,尾数取 6 位)解:x补 = 11, 011; 11. 011000y补 = 11, 100; 00. 111000 对阶j补 = jx补 jy补 = 11, 011 00, 100 11, 111阶差为 1 Sx 1, jx+ 1 x补 = 11, 100; 11. 101100 x = ( 0.101000)2-101y

49、 = ( 0.111000)2-100+ 尾数求和Sx补 = 11. 101100Sy补 = 11. 001000+110. 110100 右规x+y补 = 11, 100; 10. 110100 x+y补 = 11, 101; 11. 011010右规后 x y = (0.100110)2-11= ( )2-319325. 溢出判断 设机器数为补码,尾数为 规格化形式,并假设阶符取 2 位,阶码取 7 位,数符取 2 位,尾数取 n 位,则该 补码 在数轴上的表示为上溢下溢上溢 对应负浮点数 对应正浮点数00,1111111;11.00 0 00,1111111;00.11 111,0000

50、000;11.011 111,0000000;00.100 02127(1) 2-128(2-1+ 2-n)2-1282-12127(12-n)最小负数最大负数最小正数最大正数0阶码01, 阶码01, 阶码 10, 按机器零处理二、浮点乘除运算x = Sx 2jxy = Sy 2jy1. 乘法x y = (Sx Sy)2jx+jy2. 除法xy=SxSy 2jx jy(1) 阶码运算(2) 尾数乘除运算3. 步骤(3) 规格化(4)舍入处理例:已知x=0.101120110 y=-0.010120011,试用浮点数运算方法计算x*y。要求浮点数的格式为:阶码6位(2位阶符),补码表示,尾数5位(1位数符),补码表示,并要求为规格化浮点数。解 对x及y按所要求的浮点数格式编码x已是规格化数,可直接编码x浮=00,0110;0.1011Y不是规格化数,先将y化为规格化数再编码y=-0.010120011=-0.101020010 y浮=00,0010;1.0110 求x*y阶码相加尾数相乘E=Ex+Ey=00,0110+00,0010=00,1000M补=Mx*My补=11.10010010规格化左规积的尾数M左移一位 M补=11.0010010 积的阶码E减1 E=00,1000+11,1111=00,0111 舍入检查是否溢出

温馨提示

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

评论

0/150

提交评论