130 likes | 261 Views
第一单元 运算器及运算方法. 五、浮点运算 浮点数的加减法运算 浮点数的乘除法运算. 浮点数的加减法运算. 步骤:对阶-求和差-规格化-舍入 1、对阶:即对齐两数的小数点使两数的阶码相等 对阶原则:小阶向大阶看齐即小阶的尾数每右移一位,阶码+1。 2、求和/差:对阶之后进行尾数运算。(尾数按补码加减运算规则运算) 3、规格化:. 浮点数的加减法运算. 规格化: 当浮点数大于0时,其规格化尾数应为: M=0.1xxx…x -2 n-1 ≤ E ≤ 2 n-1 –1
E N D
第一单元 运算器及运算方法 五、浮点运算 浮点数的加减法运算 浮点数的乘除法运算
浮点数的加减法运算 步骤:对阶-求和差-规格化-舍入 1、对阶:即对齐两数的小数点使两数的阶码相等 对阶原则:小阶向大阶看齐即小阶的尾数每右移一位,阶码+1。 2、求和/差:对阶之后进行尾数运算。(尾数按补码加减运算规则运算) 3、规格化:
浮点数的加减法运算 规格化: 当浮点数大于0时,其规格化尾数应为:M=0.1xxx…x -2n-1≤ E ≤ 2n-1 –1 当浮点数为0时,其规格化尾数应为: M=0.00…0 E=0 当浮点数小于0时,其规格化尾数应为:M=1.0xxx…x -2n-1≤ E ≤ 2n-1–1 补码尾数求和的结果,可能出现下列6种情况:
浮点数的加减法运算 [M]补=00.1…… ① [M]补=11.0…… ② [M]补=00.0…… ③ [M]补=11.1…… ④ [M]补=10. …… ⑤ [M]补=01. …… ⑥ 其中① ②符合规格化数的定义,是规格化数 ③ ④需使尾数左移、阶码减1,直至满足规格化要求称为左规 ⑤ ⑥在浮点运算中表明尾数之和绝对值大于1, 将尾数右移实现规格化称为右规
例: 若两浮点数求和后运算结果为: [A+B]浮=0011 11.1101 非规格化浮点数,应左规,结果为: [A+B]浮=0001 11.0100 若两浮点数求和后运算结果为: [C+D]浮=0101 01.0010 非规格化浮点数,应右规,结果为: [C+D]浮=0110 00.1001
浮点数的加减法运算 4、舍入操作 ①“0舍1入”法:即移掉的最高位为1时则在尾数末位加1;为0时则舍去移掉的数值。 ②末位恒1法:即右移时,丢掉移出的原低位上的值并将结果的最低位置1。 5、阶码溢出判断 阶码无溢出 加减运算正常结束 阶码下溢 运算结果置为机器0 阶码上溢 置溢出标志
例:已知 x=0.11011011*22,y=-0.10101100*24求:x+y 两数的浮点表示为: [x]浮= 00 010 00 11011011 [y]浮= 00 100 11 01010100 ①对阶:x尾数Mx右移两位,x阶码Ex加2, 则 [x]浮=00 100 00 0011011011 ② 尾数求和: 00 00110110 11 ++ 11 01010100 111 11 10001010 11 ③ 规格化 尾数左归应为:11 00010101 10 阶码为:00 011④ 舍入处理:尾数采用0舍1入结果为:11 00010110 ⑤ 判溢出:阶码符号为00,无溢出故最终结果为: [x+y]浮=00 011 11 00010110 则:x+y=-0.1110101010*2011
浮点数的乘除运算 1、运算规则 : ①阶码相加减 ②尾数相乘除 2、需注意的问题: ①也需进行规格化及精度处理 ②浮点数阶码用移码、尾数用原码表示 3、浮点数的阶码运算 [x]移=2n+y -2n<x< 2n (mod 2n+1) [x]补=2n+1+y
浮点数的乘除运算 [x+y]移=[x]移+[y]补 (mod 2n+1) [x-y]移=[x]移+[-y]补 (mod 2n+1) 阶码运算溢出判断: 使用双符号位移码并规定最高符号位恒为0参加运算,则溢出条件是最高位为1。若运算结果双符号位为: 00——结果为负 0 01——结果为正 1 10——结果上溢 1 11——结果下溢
例: 例:已知下列移码进行移码加减运算并判断溢出: 若x=+011 y=+110 则有:[x]移=01 011 [y]补=00 110 [-y]补=11 010 [x+y]移=[x]移+[y]补 =10 001 结果上溢 [x-y]移=[x]移+[-y]补=00 101 结果正确,为-3 若x=-011 y=-110 则有:[x]移=00 101 [y]补=11 010 [-y]补=00 110 [x+y]移=[x]移+[y]补 =11 111 结果下溢 [x-y]移=[x]移+[-y]补=01 011 结果正确,为+3
浮点数的乘除运算 4、浮点数的尾数处理 方法1:截断处理 方法2:舍入处理 尾数用原码表示的舍入规则: ①末位恒1 尾数 相乘除①阶码相加减 ②0舍1入 尾数用补码表示的舍入规则: ①当丢失的各位均为0时,不必舍入; ②当丢失的最高位为0,以下各位不全为0时,或者丢失的最高位为1,以下各位均为0时,则舍去丢失位上的值;
浮点数的乘除运算 ③当丢失的最高位为1,以下各位不全为0时,则执行在尾数最低位入1的修正操作 例1:设[x1]补=11.01100000, [x2]补=11.01100001 [x3]补=11.01101000, [x4]补=11.01111001,求执行只保留小数点后4位有效数字的舍入操作值。 解:执行舍入操作后,其结果值分别为 [x1]补=11.0110 (不舍不入) [x2]补=11.0110 (舍) [x3]补=11.0110 (舍) , [x4]补=11.1000 (入)
浮点数的乘除运算举例 已知: x=0.1110011*2-5,y=-0.1110010*23阶码用4位移码表示,尾数(含符号位)用8位原码表示。求:x*y (要求尾数仍保留8位,用尾数之后的4位处理舍入操作) 解:移码采用双符号位,尾数用原码表示则: [Ex]移=00 011 [Ey] 补=00 011 [Ex+Ey]移= [Ex]移+ [Ey] 补=00 011+00 011= 00 110 (值为-2) 尾数采用原码一位乘法结果为:1 11001100110110 已满足规格化要求,尾数不变,阶码仍为00 110 舍入处理:尾数之后4为0110,应使末位置1 最终结果为:[x*y]浮=00 110 1 1100111, 真值为:-0.1100110* 2-2