计算机的运算方法-浮点表示-PART2_第1页
计算机的运算方法-浮点表示-PART2_第2页
计算机的运算方法-浮点表示-PART2_第3页
计算机的运算方法-浮点表示-PART2_第4页
计算机的运算方法-浮点表示-PART2_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

1、 鲁东大学鲁东大学 LUDONG UNIVERSITY 6.2 数的定点表示与浮点表示数的定点表示与浮点表示 1. 定点表示定点表示 机器码:机器码: Sf S1S2 Sn 符号位符号位 数值部分数值部分 位位 纯小数纯小数 整数整数 小数点位置小数点位置 小数点位置小数点位置 小数点位置固定小数点位置固定- 原码原码 反码反码 补码补码 移码移码 -(2n-1) 2n-1-(1-2-n) 1-2-n -(2n-1) 2n-1-(1-2-n) 1-2-n -2n 2n-1 -1 1-2-n -2n 2n-1 定点数表示范围定点数表示范围 不是纯小数不是纯小数 或者整数时或者整数时 怎么表示?怎

2、么表示? 鲁东大学鲁东大学 LUDONG UNIVERSITY 6.2 数的定点表示与浮点表示数的定点表示与浮点表示 N = S r j S:尾数尾数 r: 基数基数 j: 阶码阶码 EX: 352.47 怎么表示?怎么表示? 352.47 =0.0035247 105 通过乘通过乘10的不同次幂的不同次幂 2.浮点表示浮点表示 Sr j 一般一般 r =2,不需表示不需表示 N = 11.0101 = 11.0101 20 分别表示分别表示 = 1.10101 21 = 0.10101 210 = 0.00110101 2100 = 110.101 2-1 尾数无法用定点表示尾数无法用定点表

3、示 浮点数通过浮点数通过 表示表示 S为纯小数的表示有多种为纯小数的表示有多种 究竟用哪种?究竟用哪种? =0.35247 103 =3.5247 102 =35.247 101 鲁东大学鲁东大学 LUDONG UNIVERSITY jfj1j2j3jm SfS1S2S3Sn 浮点表示浮点表示 2.1 2.1 浮点数的表示形式浮点数的表示形式 一个浮点数通过尾数一个浮点数通过尾数S S和阶码和阶码j j两个定点数两个定点数表示表示 浮点数浮点数 N 在机器中的表示形式在机器中的表示形式 阶码阶码 j尾数尾数 S(m+1位位)(n+1位位) 阶码符号阶码符号 尾数符号尾数符号 m位位 阶码数阶码

4、数 值部分值部分 n位位 尾数数尾数数 值部分值部分 阶码阶码 j 的位数的位数 - 决定了浮点数的决定了浮点数的表示范围表示范围 尾数尾数S 的位数的位数 - 决定了浮点数的决定了浮点数的表示精度表示精度 尾数尾数S 的符号的符号 - 决定了浮点数的符号决定了浮点数的符号 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数的规格化浮点数的规格化 2.2 2.2 浮点数的规格化浮点数的规格化 N = 11.0101 = 0.10101 210 = 0.00110101 2100 无数值意义无数值意义 规格化目的:规范表示,提高精度规格化目的:规范表示,提高精度 尾数尾数S真值的真值的

5、最高位应为最高位应为1 S: 0.1 xxx |S| 2-1 (0.5) 规格化要求:规格化要求: 规格化过程:规格化过程:(基数为基数为2) -左规左规 -右规右规 尾数左移一位,阶码减尾数左移一位,阶码减1 尾数右移一位,阶码加尾数右移一位,阶码加1 (基数为基数为2) 推广:推广: 基数为基数为4, |S| 4-1,左规左规/右规每次右规每次两位两位,阶码减,阶码减/加加1 基数为基数为8, |S| 8-1,左规左规/右规每次右规每次三位三位,阶码减,阶码减/加加1 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数的表示范围浮点数的表示范围 2.3 2.3 浮点数的表示范围浮

6、点数的表示范围 设:设:N=N=S r j S 尾数尾数n+1位位, j 阶码阶码m+1位位 0 正数:正数: MAX正 正 =S max正 正 2 j max 纯小数纯小数 整数整数 =(1-2-n) m (2-1 ) 2 MIN正 正 =S min正 正 2 j min= 2-n m -(2-1 ) 2 负数:负数: MAX负 负 = |S min|负 负 2 j min |Min|负 负= m -(2-1 ) 2 - 2-n MIN负 负 = 2 j max|MAX|负 负 = |S max|负负 =-(1-2-n) m (2-1 ) 2 MAX正 正 MIN正 正 MAX负 负 MIN

7、负 负 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数的表示范围浮点数的表示范围 2.3 2.3 浮点数的表示范围浮点数的表示范围 设:设:N=N=S r j S 阶码阶码n+1位位, j 尾数尾数m+1位位 0 正数:正数: MAX正 正 =S max正 正 2 j max 纯小数纯小数 整数整数 =(1-2-n) m (2-1 ) 2 MIN正 正 =S min正 正 2 j min= 2-1 m -(2-1 ) 2 负数:负数: MAX负 负 = |S min|负 负 2 j min |Min|负 负= m -(2-1 ) 2 - 2-1 MIN负 负 = 2 j max|

8、MAX|负 负 = |S max|负负 =-(1-2-n) m (2-1 ) 2 MAX正 正 MIN正 正 MAX负 负 MIN负 负 规格化表示规格化表示 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数的表示范围浮点数的表示范围 2.3 2.3 浮点数的表示范围浮点数的表示范围 设:设:N=N=S r j S尾数尾数n+1位位, j阶码阶码m+1位位 0 正数:正数: MAX正 正 =S max正 正 2 j max MIN正 正 =S min正 正 2 j min 负数:负数: MAX负 负 = |S min|负 负 2 j min MIN负 负 = 2 j max |Mi

9、n|负 负= |MAX|负 负 = |S max|负负 MAX正 正 MIN正 正 MAX负 负 MIN负 负 当阶码当阶码最大阶码时,最大阶码时,上溢上溢 绝对值非常小绝对值非常小 按按机器零机器零处理处理 数值过大,无法数值过大,无法 处理,溢出中断处理,溢出中断 下溢下溢上溢上溢上溢上溢 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数浮点数-例题例题 EX1: 设浮点数字长设浮点数字长1616位位,其中,其中阶码阶码5 5位位(含阶符(含阶符1 1位位),),尾数尾数1111位位 (含(含1 1位数符位数符),),将十进制数将十进制数 13 +128表示为表示为浮点数机器码

10、浮点数机器码 浮点数浮点数尾数为原码尾数为原码, ,阶码为补码阶码为补码形式形式 解:解: 转换为二进制形式转换为二进制形式 将尾数和阶码用定点表示将尾数和阶码用定点表示 + 13 128 = 0.0001101 真值规格化表示真值规格化表示 0.0001101 = 0. 1101 2-3 该数为纯小数,但最高数值位该数为纯小数,但最高数值位 1 1 需要需要左规左规 = 0. 1101 2- 011 尾数尾数1111位位尾数尾数原 原= 0. 1101000000 阶码阶码5 5位位阶码阶码补 补= 1, 1101 机器码机器码11101 01101000000 常用定点方式常用定点方式 尾

11、数:原码尾数:原码/补码补码 阶码:补码阶码:补码/移码移码 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数浮点数-例题例题 EX2: 设机器数字长为设机器数字长为 24 24 位位,欲表示,欲表示3 3万万的十进制数,试问在的十进制数,试问在 保证数的最大精度保证数的最大精度的前提下,除阶符、数符各取的前提下,除阶符、数符各取1 1位外,阶码、位外,阶码、 尾数各取几位?尾数各取几位? 分析:分析: 尾数为纯小数尾数为纯小数 浮点数的表示范围由阶码决定浮点数的表示范围由阶码决定 2 215 15=32 =32K K 阶码的阶码的最大值为最大值为+15+15即可即可 阶码最少取阶

12、码最少取4 4位位数值位数值位+1+1位符号位位符号位 机器字长共机器字长共2424位位,除去除去5 5位阶码位阶码 尾数尾数最长为最长为1919位位,含,含1 1位符号位位符号位 鲁东大学鲁东大学 LUDONG UNIVERSITY 浮点数浮点数-例题例题 EX3EX3:设浮点数尾数和阶码均用设浮点数尾数和阶码均用原码原码表示,且为表示,且为规格化规格化表示表示 尾数尾数1111位,即位,即1010位位数值位数值位+1+1位符号位位符号位 阶码阶码5 5位,即位,即4 4位位数值位数值位+1+1位符号位位符号位 写出该浮点数的写出该浮点数的表示范围表示范围 分析:分析: 即求最大正数,最小正

13、数,最大负数和最小负数即求最大正数,最小正数,最大负数和最小负数 最大正数最大正数 = 最大正尾数最大正尾数 2 最大阶码 最大阶码 1-2-10 (24-1) 最小正数最小正数 = 最小正尾数最小正尾数 2 最小阶码 最小阶码 2-1 - (24-1) 最大负数最大负数 = 最小最小|负尾数负尾数 | 2 最小阶码 最小阶码 -2-1 - (24-1) 最小负数最小负数 = 最大最大|负尾数负尾数 | 2 最大阶码 最大阶码 -(1-2-10) (24-1) 如果用补码表示呢?如果用补码表示呢? 0.111 0.100 1.111 1.100 (- ( 2-1+2-10 )补 补=1.011

14、 (- 1)补 补=1.000 (- 2-1 )补 补=1.100 补码尾数规格化标志:符号位与最高数值位相反补码尾数规格化标志:符号位与最高数值位相反 (- 1)补 补 (- ( 2-1+2-10 )补 补 - 24 - 24 鲁东大学鲁东大学 LUDONG UNIVERSITY IEEE 754标准标准 Sf 数符数符 阶码(含阶码(含1位阶符位阶符)尾数尾数 阶码:阶码:+0111偏移量的偏移量的移码移码表示表示 尾数:规格化尾数:规格化原码原码 规格化后,最高有效数值位为规格化后,最高有效数值位为1 1 不表示该位,从不表示该位,从第二位数值位第二位数值位 开始表示开始表示 IEEE标

15、准标准 符号位符号位 阶码阶码 尾数尾数 总位数总位数 短实数短实数 1 8 23 32 长实数长实数 1 11 52 64 临时实数临时实数 1 15 64 80 float double IA32浮点寄存器浮点寄存器 鲁东大学鲁东大学 LUDONG UNIVERSITY 机器零机器零 浮点数为零:浮点数为零: 尾数为零尾数为零 阶码下溢阶码下溢 阶码阶码 最小值最小值 机器中的表示机器中的表示 当尾数用当尾数用补码补码表示表示 阶码用阶码用移码移码表示表示 0补 补=0.0000 最小整数值最小整数值= -2-m 最小整数值最小整数值补 补= 1,000 最小整数值最小整数值移 移= 0,

16、000 机器零的表示:机器零的表示: 0,000;0.0000 正好机器零为全零正好机器零为全零 鲁东大学鲁东大学 LUDONG UNIVERSITY 6.3 定点运算定点运算 1.1.移位运算移位运算 移位的意义移位的意义 左移左移 - - 每移动一位,将绝对值每移动一位,将绝对值* *基数基数 右移右移 - - 每移动一位,将绝对值每移动一位,将绝对值/ /基数基数 利用移位配合加法,实现乘利用移位配合加法,实现乘/ /除法除法 算术移位与逻辑移位算术移位与逻辑移位 算术移位算术移位 - - 有符号数的移位有符号数的移位 逻辑移位逻辑移位 - - 无符号数的移位无符号数的移位 移位后,保持

17、符号不变移位后,保持符号不变 EX: EX: 机器码机器码 FFHFFH FFHFFH为原码为原码 算术右移算术右移1 1位位1 1,11111111111111 1 1,0 011111111111 1 FFHFFH无符号数无符号数 逻辑右移逻辑右移1 1位位1 1,11111111111111 0 0,1 111111111111 1 鲁东大学鲁东大学 LUDONG UNIVERSITY 移位运算移位运算 算术移位规则算术移位规则 移位后应满足:移位后应满足: v符号位不变符号位不变 v绝对值绝对值 左移左移=*基数基数 右移右移=/基数基数 原码原码(数值位(数值位=真值)真值) 符号位

18、不变,数值位补符号位不变,数值位补0 反码反码 正数相同正数相同 负数,负数,数值位相反数值位相反 符号位不变符号位不变 正数数值位补正数数值位补0 负数数值位补负数数值位补1 补码补码 正数相同正数相同 负数,负数,右数第右数第1个零右个零右 边相同,左边相反边相同,左边相反 符号位不变符号位不变 正数数值位补正数数值位补0 负数数值位负数数值位,右移左边补右移左边补1 左移右边补左移右边补0 符号位不变符号位不变 右移补符号位右移补符号位 左移补左移补0 鲁东大学鲁东大学 LUDONG UNIVERSITY 移位运算移位运算 算术移位规则算术移位规则 真值真值码码 制制移位规则移位规则 正

19、数正数原、反、补原、反、补符号位不变,数值位补符号位不变,数值位补0 0 负数负数 原码原码符号位不变,数值位补符号位不变,数值位补0 0 补码补码 左移,符号位不变,右边补左移,符号位不变,右边补0 0 右移,符号位不变,左边补右移,符号位不变,左边补 符号位符号位 反码反码符号位不变,数值位补符号位不变,数值位补1 1 鲁东大学鲁东大学 LUDONG UNIVERSITY 移位运算移位运算-例题例题 EX:设机器数字长为设机器数字长为 8 位(含一位符号位位(含一位符号位),),写出写出 A = +26时,三种机器数时,三种机器数左、右移一位左、右移一位和和两位后两位后的的表示形表示形 式

20、及对应的真值式及对应的真值,并,并分析结果分析结果的正确性。的正确性。 解:解: A = +26 则则 A原 原 = A补补 = A反反 = 0,0011010 = +11010 + 60,0000110 +130,0001101 +1040,1101000 + 520,0110100 +260,0011010移位前移位前 A原 原=A补补=A反反 对应的真值对应的真值 机机 器器 数数 移位操作移位操作 1 2 1 2 右移造成精度丢失右移造成精度丢失 0, 1010000+80 3 左移造成结果错误左移造成结果错误 鲁东大学鲁东大学 LUDONG UNIVERSITY 移位运算移位运算 E

21、X:EX:设机器数字长为设机器数字长为8 8位(含位(含1 1位符号位位符号位) X反 反=1.0101111 X原 原=0.0011010 X补 补=1.1010100 算术左移一位算术左移一位 X原 原=0.00110100 X补 补=1.10101000 X反 反=1.01011111 算术右移一位算术右移一位 X原 原=0. 00011010 X补 补=1.11010100 X反 反=1.10101111 算术右移两位算术右移两位 X原 原=0. 000011010 X补 补=1.111010100 X反 反=1.110101111 左移移出有效左移移出有效 位,出错位,出错 右移移出

22、有效位,精度降低右移移出有效位,精度降低 鲁东大学鲁东大学 LUDONG UNIVERSITY 8086移位指令移位指令 移位指令,移位指令,4 4组,组,8 8条移位指令条移位指令 逻辑移位逻辑移位算术移位算术移位 SHSHR R SHSHL L SASAR R SASAL L 带进位的循环移位带进位的循环移位 RCRCR R RCRCL L 循环移位循环移位 ROROR R ROROL L CFCF SARSAR CFCF SHRSHR 0 0 CFCF SALSAL 0 0 SHLSHL CFCF RORROR CFCF ROLROL CFCF RCRRCR CFCF RCLRCL 鲁东

23、大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法 2.2.定点加减法定点加减法 加减法加减法补码运算补码运算 加法运算加法运算 A+B补 补 = A补补+B补补( (MOD 2n+1) A+B补 补 = A补补+B补补( (MOD 2) 减法运算减法运算 A-B = A+(-B) A-B补 补 = A补补+-B补补( (MOD 2n+1) A-B补 补 = A补补+-B补补( (MOD 2) 减法是通过减法是通过实现的实现的 Example 只取低只取低n+1位,位, 高位丢失高位丢失 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法-溢出判断溢

24、出判断 溢出溢出- -运算结果的长度运算结果的长度超出机器字长超出机器字长 判断判断与与的关系的关系 可能溢出?可能溢出? 溢出表现溢出表现 正正数数+ +正正数数 (正正数数- -负数负数) 可能可能结果为结果为负负数数 正数正数+ +负数负数 (正数(正数- -正数正数) 不可能不可能 负负数数+ +负负数数 (负负数数- -正数)正数) 可能可能结果为结果为正正数数 负数负数+ +正数正数 (负数(负数- -正数)正数) 不可能不可能 同号相加同号相加 (异号相减)(异号相减) 结果的符号位与原操作结果的符号位与原操作 数不同,则发生溢出数不同,则发生溢出 鲁东大学鲁东大学 LUDONG

25、 UNIVERSITY 定点加减法定点加减法-溢出判断溢出判断 0, X1 X2 X3 X4 0, Y1 Y2 Y3 Y4 + 1, Z1 Z2 Z3 Z4 溢出表现:溢出表现: 最高数值位产生进位最高数值位产生进位1 10 v正数正数+正数正数 (正数正数-负数负数) 正数正数-符号位进位符号位进位0 v负数负数+负数负数 (负数负数-正数正数) 1, X1 X2 X3 X4 1, Y1 Y2 Y3 Y4 + 0, Z1 Z2 Z3 Z4 01 溢出表现:溢出表现: 最高数值位产生进位最高数值位产生进位0 负数负数-符号位进位符号位进位1 发生溢出时发生溢出时-符号位进位与最高数值位进位相反

26、符号位进位与最高数值位进位相反 机器中的实现方法机器中的实现方法 设:设: 最高数值位进位最高数值位进位C1 符号位进位符号位进位C0 溢出标志溢出标志OV OV=C0 C1 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法-溢出判断溢出判断 双符号位判溢出双符号位判溢出 0 0, X1 X2 X3 X4 0 0, Y1 Y2 Y3 Y4 + 0 1, Z1 Z2 Z3 Z4 10 v正数正数+正数正数 (正数正数-负数负数) v负数负数+负数负数 (负数负数-正数正数) 1 1, X1 X2 X3 X4 1 1, Y1 Y2 Y3 Y4 + 1 0, Z1 Z2 Z

27、3 Z4 01 双符号位双符号位-保存最高数值位和符号位的进位保存最高数值位和符号位的进位 结果双符号位不同时,溢出结果双符号位不同时,溢出 原操作数补码的两个符号位相同原操作数补码的两个符号位相同 高符号位代表真实符号高符号位代表真实符号 双符号位补码也叫做变形码双符号位补码也叫做变形码 Example 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法 EXEX:已知已知 A = 0.1011,B = -0.0101A = 0.1011,B = -0.0101,求求 A+BA+B补 补 解:解: 写出运算数的补码形式写出运算数的补码形式 作补码加法作补码加法 A =

28、 0.1011A = 0.1011AA补 补 = 0.1011 = 0.1011 B = -0.0101B = -0.0101BB补 补 = 1.1011 = 1.1011 A+BA+B补 补 = = AA补 补+ +BB补 补 0.10110.1011 1.10111.1011 + 10.011010.0110 A+BA+B补 补 = 0.0110 = 0.0110 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法 EXEX:设机器字长设机器字长8 8位,已知位,已知 A = +15,B = +24A = +15,B = +24,求求 A-BA-B补 补 解:解:

29、写出运算数的补码形式写出运算数的补码形式 作补码加法作补码加法 A = +15 = +1111A = +15 = +1111AA补 补 = 0,0001111 = 0,0001111 B = +24 = +11000B = +24 = +11000BB补 补 = 0,0011000 = 0,0011000 A-BA-B补 补 = = AA补 补+- +-BB补 补 0,00011110,0001111 1,11010001,1101000 + 1,11101111,1110111 A-BA-B补 补 = 1 = 1,11101111110111 求求-BB补 补 = 1,1101000 = 1

30、,1101000 即即 -9 -9 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法 EXEX:已知机器字长已知机器字长8 8位,位,A = -93,B = +45A = -93,B = +45,求求 A-BA-B补 补 解:解: 写出运算数的补码形式写出运算数的补码形式 作补码加法作补码加法 A = -93 = -1011101A = -93 = -1011101AA补 补 = 1,0100011 = 1,0100011 B = +45 = +101101B = +45 = +101101BB补 补 = 0,0101101 = 0,0101101 A-BA-B补 补

31、 = = AA补 补+- +-BB补 补 1,01000111,0100011 1,10100111,1010011 + 10,111011010,1110110 A-BA-B补 补 = 0 = 0,11101101110110 求求-BB补 补 = 1,1010011 = 1,1010011 即即 +118 +118 A A B B = -93-45= -93-45 = -138= -138 8位补码表示范围位补码表示范围 -2727-1,即即-128127 超出表示范围超出表示范围 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法 EXEX:设设X = -X =

32、- 16 11 Y = -Y = - 16 7 用变形码计算用变形码计算X+YX+Y 解:解: 写出运算数的补码形式写出运算数的补码形式 作补码加法作补码加法 溢出判断溢出判断 X = -0.1011X = -0.1011XX补 补 = 1.0101 = 1.0101 Y = -0.0111Y = -0.0111YY补 补 = 1.1001 = 1.1001 1 11 1. .01010101 1 11 1. .10011001 + 1010. .11101110 结果的双符号位不同,所以溢出结果的双符号位不同,所以溢出 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减

33、法-硬件配置硬件配置 (III) (III) 补码定点加减法的硬件配置补码定点加减法的硬件配置 累加器累加器A(n+1位位)寄存器寄存器X(n+1位)位) 溢出溢出 判断判断 OV 求补求补 控制逻辑控制逻辑 加法器加法器 (n+2位)位)双符号位双符号位 n+1位位寄存器寄存器 存放运算数存放运算数补码补码 控制控制 X 送加法器送加法器 同时,加法器同时,加法器末位进末位进 位为位为1 Gs 减法减法Flag GA 加法加法Flag 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点加减法定点加减法-控制流程控制流程 被加(减)数被加(减)数A; 加(减)数加(减)数X GA=1,

34、加法加法 跳至第三步跳至第三步 Gs=1,减法减法 求补逻辑有效,求补求补逻辑有效,求补 累加器累加器A寄存器寄存器X 溢出溢出 判断判断 OV 求补控求补控 制逻辑制逻辑 加法器加法器 (n+2位)位)双符号位双符号位 GsGA 寄存器送加法器寄存器送加法器 (A)+(X)-(A)(mod 2n+1) 判溢出判溢出 设置标记位设置标记位OV 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 3.3.定点乘法定点乘法 笔算乘法的过程笔算乘法的过程I A=0.1101 B=0.1011,求求A B 0.1101 0.1011 1101 1101 0000 11

35、01 100011110. 左移左移被乘数被乘数 累加累加 问题问题1:累加无法一次完成累加无法一次完成 问题问题2:左移需要左移需要两倍长度两倍长度的积寄存器的积寄存器 笔算乘法的过程笔算乘法的过程II A B=A 0.1011 =A 0.1+ A 0.00 +A 0.001+ A 0.0001 =A 0.1 +A 0.001+ A 0.0001 = A 0.1 +A 0.1 0. 01+ A 0.1 0.001 = 0.1 (A +0.1(0 A+ 0. 1(A+ 0. 1 ( A+0) ) 0.1 :将累加和右移将累加和右移 A:当前乘数位当前乘数位*A (A+:将将A加到累加和上加到累

36、加和上 鲁东大学鲁东大学 LUDONG UNIVERSITY 右移右移1位位 定点运算定点运算-乘除法乘除法 A B = 0.1 (A +0.1(0 A+ 0. 1(A+ 0. 1 ( A+0) ) A*B最低位最低位+0(部分积)(部分积) 0.1101+0=0.1101 =0.01101 当前部分积当前部分积+A*B次低位次低位 0.01101+0.1101=1.00111 右移右移1位位=0.100111 当前部分积当前部分积+A*B第第2位位 0.100111 +0= 0.100111 右移右移1位位=0.0100111 当前部分积当前部分积+A*B第第1位位 0.0100111 +

37、0.1101= 1.0001111 右移右移1位位=0.10001111 n位乘法,位乘法,n次次加法和右移实现加法和右移实现 加法加法=部分积部分积高位高位+乘数当前乘数当前 位位*被乘数被乘数 部分积和乘数一起部分积和乘数一起右移右移 积积=部分积和乘数寄存器部分积和乘数寄存器 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 I. 原码乘法原码乘法 运算规则运算规则 原码一位乘硬件配置原码一位乘硬件配置 原码一位乘控制流程原码一位乘控制流程 原码两位乘原码两位乘 运算规则运算规则 原码表示原码表示 接近真值接近真值 原码乘法规则如下原码乘法规则如下 X

38、原 原=x0 . x1 x2 x3 xn Y原 原=y0 . y1 y2 y3 yn X原 原 Y原原 = x0 y0 .(0. x1 x2 xn 0. y1 y2 yn) x0 y0:乘积的符号位独立运算乘积的符号位独立运算 由运算数的符号位异或得到由运算数的符号位异或得到 x* y* :乘积的数值位部分乘积的数值位部分 由运算数的绝对值相乘得到由运算数的绝对值相乘得到 x* y* Example 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 I. 原码乘法原码乘法 运算规则运算规则 原码一位乘硬件配置原码一位乘硬件配置 原码一位乘控制流程原码一位乘控

39、制流程 原码两位乘原码两位乘 原码一位乘硬件配置原码一位乘硬件配置 加法器加法器 (n+1位)位) A 部分积部分积 X 被乘数被乘数 控制门控制门 加加 右移右移 FQ 乘数乘数 n S 计数器 加/移位次数 Q0 0 求乘积的数值部分求乘积的数值部分 C0 Qn=1 YN AA+X A、Q联合右移联合右移 C C-1 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 I. 原码乘法原码乘法 运算规则运算规则 原码一位乘硬件配置原码一位乘硬件配置 原码一位乘控制流程原码一位乘控制流程 原码两位乘原码两位乘原码两位乘原码两位乘 提高运算速度,每次考虑提高运算

40、速度,每次考虑yn-1 yn两位两位 yn-1 yn 00部分积不加部分积不加 01部分积部分积+x 10部分积部分积+2x 11部分积部分积+3x 部分积右移部分积右移2位位 乘数右移乘数右移2位位 通过通过+4X-X实现实现 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点乘除法定点乘除法-原码乘法原码乘法 x* y* = x* 0. y1 y2 yn 被乘数和乘数的绝对值相乘被乘数和乘数的绝对值相乘 = x* (y1 2-1+ y2 2-2 + yn 2-n) = 2-1 (y1 x* + 2-1 (y2 x* + 2-1 ( 2-1 (yn x*+0 ) z0 Zi为第为第i

41、次运算的部分积次运算的部分积 z1 zn-1 zn z0 =0; z1 = 2-1 (yn x*+ z0 ) zi = 2-1 (yn-i+1 x*+ zi -1) zn = 2-1 (y1 x*+ zn -1) 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点乘除法定点乘除法-原码乘法原码乘法 EX: 已知已知 X = -0.1110, Y = -0.1101 求求 XY原 原 解:解: 求原码求原码 求积的数值部分求积的数值部分 求积的符号位求积的符号位 X原 原 = 1.1110 Y原 原 = 1.1101 X原 原 数值部分 数值部分0.1110 Y原 原 数值部分 数值部分

42、0. 1101 积的积的 数值部分数值部分 =0.1011 0110 积的积的 符号位符号位 =x0 y0=0 XY原 原= 0.1011 0110 鲁东大学鲁东大学 LUDONG UNIVERSITY 部分积部分积乘数乘数说明说明 ;起始状态,部分积为起始状态,部分积为011010.0000 ;yi为为1,部分积部分积加被乘数加被乘数 + 0.1110 0.1110;部分积和乘数一起部分积和乘数一起右移右移 0.01110110 ; yi为为0,部分积部分积加加0 + 0.0000 0.0111; 右移右移 0.00111011; yi为为1,部分积部分积加被乘数加被乘数 + 0.1110

43、1.0001; 右移右移 0.10001101; yi为为1,部分积部分积加被乘数加被乘数 + 0.1110 1.0110; 右移右移 0.10110110 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 II. 补码乘法补码乘法 校正法校正法 Booth算法硬件配置算法硬件配置 Booth算法控制流程算法控制流程 校正法校正法 Booth算法算法 X补 补=x0 . x1 x2 x3 xn Y补 补=y0 . y1 y2 y3 yn 情况情况1:若:若y(乘数乘数)为正数为正数 X X 补 补和 和 Y Y 补 补按照原码规则乘 按照原码规则乘 情况情况

44、2:若:若y(乘数乘数)为负数为负数 X X 补 补和 和 Y Y 补 补的数值位 的数值位 按原码规则乘按原码规则乘 乘积乘积+-+-xx补补进行校正进行校正 Example 注意!注意!补码运算均补码运算均带符号运算带符号运算 符号通过运算直接得到符号通过运算直接得到 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 II. 补码乘法补码乘法 校正法校正法 Booth算法硬件配置算法硬件配置 Booth算法控制流程算法控制流程 Booth算法算法 X补 补=x0 . x1 x2 x3 xn Y补 补=y0 . y1 y2 y3 yn XY补 补 =X补

45、补(0. y1 y2 y3 yn)+ y0 -X补补 Booth算法的推导过程算法的推导过程 Booth算法算法 初始:部分积初始:部分积=0,补,补yn+1=0; 过程:新部分积过程:新部分积 = 部分积部分积+(yi+1-yi) X补 补; 部分积与乘数一起右移;部分积与乘数一起右移; 注意:最后一次加法后,不移位;注意:最后一次加法后,不移位; Example 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 II. 补码乘法补码乘法 校正法校正法 Booth算法硬件配置算法硬件配置 Booth算法控制流程算法控制流程 Booth算法算法 Booth算

46、法硬件配置算法硬件配置 初始:部分积初始:部分积=0,补,补yn+1=0; 过程:新部分积过程:新部分积 = 部分积部分积+(yi+1-yi) X补 补; 部分积与乘数一起右移;部分积与乘数一起右移; 注意:最后一次加法后,不移位;注意:最后一次加法后,不移位; 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-乘除法乘除法 II. 补码乘法补码乘法 校正法校正法 Booth算法硬件配置算法硬件配置 Booth算法控制流程算法控制流程 Booth算法算法 Booth算法控制流程算法控制流程 0A,被乘数被乘数X 乘数乘数Q,0Qn+1 nC Qn+1Q n 10 A+XA

47、A+(-X)A A、Q一起右移一位一起右移一位 00 11 C-1C 01 C=0? N Y Qn+1Q n 10 A+XAA+(-X)A 01 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点乘法定点乘法-补码校正法补码校正法 EX: 已知已知 X = -0.1110, Y = -0.1101 求求 XY补 补 解:解: 求补码求补码 求校正前的积求校正前的积 校正校正 X补 补 = 1.0010 Y补 补 = 1.0011 X补 补 1.0010 Y补补 数值部分 数值部分0011 +-X补 补 =1.1101 0110+0.1110=0.1011 0110 XY补 补= 0.1

48、011 0110 Y乘数为负数,需要校正乘数为负数,需要校正 -X补 补 = 0.1110 校正前校正前 积积=1.1101 0110 乘积符号直接求出乘积符号直接求出 鲁东大学鲁东大学 LUDONG UNIVERSITY 部分积部分积乘数乘数说明说明 ;起始状态,部分积为起始状态,部分积为0001100.0000 ;yi为为1,部分积部分积加被乘数加被乘数 + 11.0010 11.0010;部分积和乘数一起部分积和乘数一起右移右移 11.10010001 ; yi为为1,部分积部分积加被乘数加被乘数 + 11.0010 10.1011; 右移右移 11.01011000; yi为为0,部分

49、积部分积加加0 + 00.0000 11.0101; 右移右移 11.10101100; yi为为0,部分积部分积加加0 + 00.0000 11.1010; 右移右移 11.11010110 注意!注意!补码带符号运算,所以部分积补码带符号运算,所以部分积双符号位双符号位 高位符号位为真实符号高位符号位为真实符号 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-补码补码Booth算法算法 Booth算法的推导算法的推导 = X补 补(0. y1 y2 y3 yn) - y0 X补补 = X补 补(0. y1 y2 y3 yn - y0 ) = X补 补(- y0 +

50、0. y1 y2 y3 yn) 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 ) + 2-1 (y2 - y1) + 2-2 (y3 - y2)+ + 2-n-1 (yn yn-1) + 2-n (0 - yn) 由由 XY补 补 = X补补(0. y1 y2 y3 yn)+ y0 -X补补 令:令:yn+1=0 XY补 补 = X补补 (y1 - y0 ) + 2-1 (y2 - y1) + 2-2

51、(y3 - y2)+ + 2-n (yn+1 - yn) 鲁东大学鲁东大学 LUDONG UNIVERSITY 初始状态:初始状态: 定点运算定点运算-补码补码Booth算法算法 XY补 补 = X补补 (y1 - y0 ) + 2-1 (y2 - y1) + + 2-n (yn+1 - yn) Booth算法规则算法规则 Z0补 补 = 0 Z1补 补 = Z0补 补 + (yn+1 - yn) X补 补 令:令:yn+1 =0;()2-1 Z2补 补 = Z1补 补 + (yn- yn-1) X补 补 ()2-1 Zn补 补 = Zn-1补 补+ (y2- y1) X补补 ()2-1 由乘

52、数末位由乘数末位(yi+1-yi)决定决定 部分积加上的内容;部分积加上的内容; 新的部分积与乘数一起新的部分积与乘数一起 右移;继续上一步右移;继续上一步 XY补 补 = Zn补补+ (y1 - y0 ) X补补 最后一次加后,最后一次加后,不移位不移位 对于对于n位位数值位,数值位,1位符号位的补码位符号位的补码Booth乘法乘法 共进行共进行n+1次次的的加加法和法和n次次的的移移位位 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点乘法定点乘法-补码补码Booth算法算法 EX: 已知已知 X = -0.1110, Y = -0.1101 求求 XY补 补 解:解: 求补码求

53、补码 用用BoothBooth算法求积算法求积 X补 补 = 1.0010 Y补 补 = 1.0011 X补 补 1.0010 Y补补1. 0011 XY补 补= 0.1011 0110 加(加(Yi+1-Yi)X补补 -X补 补 = 0.1110 带符号运算带符号运算 乘数末位补乘数末位补0 Yi+1Yi 为为00,01,10,11 (Yi+1-Yi)为为 0,-1,1,0 相应相应 加加 0,-X补 补 , X补补 ,0 X补 补 1.0010 Y补补1. 00110 鲁东大学鲁东大学 LUDONG UNIVERSITY 部分积部分积乘数乘数说明说明 ;起始状态,部分积为起始状态,部分积为

54、010011000.0000 ;yi+1 yi为为01,部分积部分积加加-x补 补 + 00.1110 00.1110;部分积和乘数一起部分积和乘数一起右移右移 00.0111010011 ; yi+1 yi为为11,部分积部分积加加0 + 00.0000 00.0111; 右移右移 00.0011101001; yi+1 yi为为10,部分积部分积加加x补 补 + 11.0010 11.0101; 右移右移 11.1010110100; yi+1 yi为为00,部分积部分积加加0 + 00.0000 11.1010; 右移右移 11.1101011010 注意!注意!补码带符号运算,所以部分

55、积补码带符号运算,所以部分积双符号位双符号位 高位符号位为真实符号高位符号位为真实符号 ; yi+1 yi为为01,部分积部分积加加-x补 补 +00.1110 00.1011 011010 ; 最后一次不移位最后一次不移位 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点乘法定点乘法-Booth算法硬件配置算法硬件配置 加法器加法器 A 部分积部分积 X 被乘数被乘数 控制门控制门 加加 右移右移 FQ 乘数乘数 n 原码一位乘硬件框图 补码补码Booth算法算法 与原码乘法的不同:与原码乘法的不同: 原码不带符号运算原码不带符号运算 补码带符号运算补码带符号运算 n +1位位n

56、+1位位 n +2位位 n+2位位 原码只有加原码只有加X或加或加0 两种情况两种情况 补码根据补码根据yn+1yn的的 值有加值有加X,加加-X和加和加0 三种情况三种情况 n n+1 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点运算定点运算-除法除法 4.4.定点除法定点除法 笔算除法的过程笔算除法的过程 x=-0.1011 y= 0.1101,求求 x / y 0.10110.11010 0.01101 0.010010 0.001101 0.00010100 0.00001101 0.00000111 0.1101 y 右移右移 y 右移右移 y 右移右移 减法减法 减法

57、减法 减法减法 问题问题1:怎样确定能否上商?怎样确定能否上商? 问题问题2:右移除数作减法,加法器需要右移除数作减法,加法器需要 两倍运算数长度两倍运算数长度 问题问题3:上商怎样能上到相应位?上商怎样能上到相应位? 通过减法,判断是否能上商通过减法,判断是否能上商 通过左移被除数代替右移除数通过左移被除数代替右移除数 上到商的最低位,商寄存器左移,保证从高到低上商上到商的最低位,商寄存器左移,保证从高到低上商 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点除法-原码除法 I. 原码除法原码除法 设设X原 原 = x0.x1 x2 x3 xn Y原 原 = y0.y1 y2 y3

58、 yn X/Y原 原 =( x0 y0)( X* / Y*) 商符单独求商符单独求 = x0 y0 商值商值 = X 绝对值绝对值 / Y 绝对值绝对值 注意!注意! 为防止溢出,要求:为防止溢出,要求: |被除数被除数|0, 上商上商1 左移余数后,减除数左移余数后,减除数 情况情况2: 当余数当余数Ri0时,上商时,上商1 左移后,左移后,减除数减除数,判断上商,判断上商 当当余数余数 0时,上商时,上商0 左移后,左移后,加除数加除数,判断上商,判断上商 故:又称故:又称 商符号单独求商符号单独求 Example 鲁东大学鲁东大学 LUDONG UNIVERSITY 定点除法定点除法-原

59、码除法原码除法 不恢复余数法硬件配置不恢复余数法硬件配置 加法器加法器 1 初始,部分余数初始,部分余数=被除数,商被除数,商=00.00000.1011 ;+-y*补 补 + 1.0011 1.1110 0.1011 1.0110 ; 部分余数和商部分余数和商 联合左移联合左移 + 1.0011 0.0001 ; +-y*补 补 0.1001 1.0010; 左移左移 + 1.0011; +-y*补 补 0.0101 0.10100.0110 0.0000 ; 结果为结果为正数,上商正数,上商1 0.0010 ;结果为结果为正数,上商正数,上商1 0.0000 + 0.1101 0.0011

60、 ; 左移左移 ;结果为结果为负数,上商负数,上商0 ;恢复余数恢复余数 定点除法定点除法-原码恢复余数法原码恢复余数法 鲁东大学鲁东大学 LUDONG UNIVERSITY 部分余数部分余数商商说明说明 0.01100.1010;+-y*补 补 + 1.0011 1.1101;X*-Y* 结果为结果为负数,上商负数,上商0 + 0.1101 0.0110 ;恢复余数,恢复余数,+y*补补 0.1010 1.0100 ; 部分余数和商部分余数和商 联合左移联合左移 + 1.0011 0.1101 ; +-y*补 补 0.0111 0.1100 结果为结果为正数,上商正数,上商1 共上商共上商5

温馨提示

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

评论

0/150

提交评论