浮点数的运算方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阶符 X: Y: 0 0 0 0 阶码 010 100 数符 0 0 1 1 尾 数
11011011 01010100
21
计算过程: ① 对阶操作 阶差∆E=[EX]补+[-EY]补 =00010+11100=11110 X阶码小,MX右移2位,保留阶码E=00100。 [MX]补=00 00 110 110 11 下划线上的数是右移出去而保留的附加位。
权 22
010.01 110.1
23 ×0.01001 23 ×0.1101
对应位权值相同
对应位权不一样,不能直接相加减 对应位权不一样,
对阶:使两数阶码相等(小数点实际位置对齐)。 对阶:使两数阶码相等(小数点实际位置对齐)。
5
(1)“对阶”原则: ) 对阶”原则:
原则:小阶向大阶看齐。 原则:小阶向大阶看齐。
3.5 浮点数的运算方法
1
浮点数比定点数的表示范围宽, 浮点数比定点数的表示范围宽,有效精度 更适合于科学与工程计算的需要。 高,更适合于科学与工程计算的需要。当要 求计算精度较高时,往往采用浮点运算。 求计算精度较高时,往往采用浮点运算。
2
3.5.1 浮点数的加减法运算
浮点数的表示形式(以 为底进行讨论 为底进行讨论): 浮点数的表示形式 以2为底进行讨论 : N=M·2E M为浮点数的尾数,一般为绝对值小于1 为浮点数的尾数,一般为绝对值小于 为浮点数的尾数 的规格化二进制小数, 的规格化二进制小数,用原码或补码形式表 示; E为浮点数的阶码,一般是用移码或补码 为浮点数的阶码, 为浮点数的阶码 表示的整数。 表示的整数。
9
2、尾数的加/减运算( MX±MY ) 、尾数的加 减运算 减运算(
执行对阶后,两尾数进行加 减运算 减运算, 执行对阶后,两尾数进行加/减运算,得到两数 之和/差 之和 差。
10
3、规格化操作 、
设尾数M的数值部分有 位 设尾数 的数值部分有n位,规格化数的 的数值部分有 范围为: 范围为: 如尾数M用原码表示时 用原码表示时: 如尾数 用原码表示时:
14
若运算结果是非规格化数, 若运算结果是非规格化数,例如尾数是 11.1XX…X或00.0XX…X形式,就需要 形式, 或 形式 将尾数左移,每左移一位,阶码减1, 将尾数左移,每左移一位,阶码减 ,直至 满足规格化条件为止( 满足规格化条件为止(即尾数最高有效位的 真值为1,或尾数符与最高有效位不等)。 真值为 ,或尾数符与最高有效位不等)。 这个过程称为左规 左规。 这个过程称为左规。
25
1/2≤|[ ]原|≤1-2-n |[M] |[
如尾数M用原码表示时: 如尾数 用原码表示时: 用原码表示时
1/2≤[M]补≤1-2-n (当M为正 [ ] 为正) 当 为正 1/2≤|[ ]补|≤1(当M为负 。 |[M] 为负)。 |[ 当 为负
11
双符号位的原码规格化尾数, 双符号位的原码规格化尾数,其数值的 原码规格化尾数 最高位为1; 最高位为 ; 双符号位的补码规格化尾数, 补码规格化尾数 双符号位的补码规格化尾数,应是 00.1XX…X(正) (X可为 或1) 可为0或 ) ( 可为 可为0或 ) 或11.0XX…X(负) (X可为 或1) ( 可为
17
4、舍入 、
在执行右规或对阶时, 在执行右规或对阶时,尾数低位上的数值 会移掉,使数值的精度受到影响,常用“ 会移掉,使数值的精度受到影响,常用“0” 入法。 舍“1”入法。 入法
18
5、检查阶码是否溢出 、
阶码溢出表示浮点数溢出。 阶码溢出表示浮点数溢出。在规格化和舍 入时都可能发生溢出,若阶码正常, 入时都可能发生溢出,若阶码正常,加/减 减 运算正常结束。 运算正常结束。 若阶码下溢,则置运算结果为机器零, 若阶码下溢,则置运算结果为机器零,若 上溢,则置溢出标志。 上溢,则置溢出标志。
22
② 尾数相加 [MX]补+[MY]补 =000011011011+1101010100 =1110001010 11
23
规格化操作 ③ 规格化操作 左规,移1位,结果=1100010101 10;阶码 , 左规, 位 结果 阶码-1, 阶码 E=00011。 。
24
④ 舍入 附加位最高位为1,在所得结果的最低 位+1,得新结果: [M]补=1100010110,M=-0.11101010。 ⑤ 判溢出 阶码符号位为00,故不溢出,最终结果 为:X+Y=2011·(-0.11101010)
3
设有两浮点数X 设有两浮点数X,Y实现X±Y运算,其中: 实现X 运算,其中: X=MX·2EX; Y=MY·2EY。其中MX,MY均为规格化 其中M 数。 执行以下五步完成运算。 执行以下五步完成运算。 五步完成运算
4
1、对阶 、
例:
22×0.1001 23×0.1101
权 21
10.0 1 11 0.1
7
(3) “对阶”操作 ) 对阶”操作:
比较两浮点数阶码的大小, 比较两浮点数阶码的大小,求出其差 ∆E,并保留其大值 ,E=max(EX,EY)。 ,并保留其大值E, 。 当∆E≠0时,将阶码值小的数的尾数右移 时 ∆E位,并将其阶码值加上 ,使两数的 位 并将其阶码值加上∆E, 阶码值相等。 阶码值相等。
6
(2)小阶向大阶对齐的原因: )小阶向大阶对齐的原因:
当阶码小的数将尾数右移并相应增加阶 码时,舍去的仅是尾数低位部分,误差很小。 码时,舍去的仅是尾数低位部分,误差很小。 若让阶码大的数将尾数左移并相应减少 阶码,就会丢失尾数的高位部分, 阶码,就会丢失尾数的高位部分,这会导致 错误的结果。 错误的结果。
19
为规格化浮点数加减运算流程。 图3.8为规格化浮点数加减运算流程。 为规格化浮点数加减运算流程
图3.8 规格化浮点数加减运算流程
20
两浮点数相加, 例3.45 两浮点数相加,求X+Y。 。 已知: 已知:X=2010·0.11011011, Y=2100·(-0.10101100) 在机器中的浮点补码表示形式为( 解 :X和Y在机器中的浮点补码表示形式为(双符号位) 和 在机器中的浮点补码表示形式为 双符号位)
15(2)右规 )00 .0101 + 00 .1101 01. 0010 |M|>1 | 应右移规格化,右规, 应右移规格化,右规,M
,阶码+1 阶码
16
若运算结果尾数发生溢出, 若运算结果尾数发生溢出,例如尾数为
10.XX…X或01. XX…X形式,这并 或 形式, 形式 不表明浮点结果会溢出, 不表明浮点结果会溢出,此时需调整 阶码,将尾数右移一位,阶码加1, 阶码,将尾数右移一位,阶码加 ,称 右规。 为右规。
8
尾数右移时,对原码表示的尾数, 尾数右移时,对原码表示的尾数,符 号位不参加移位, 号位不参加移位,尾数数值部分的高位补 0;对补码表示的尾数,符号位参加右移, ;对补码表示的尾数,符号位参加右移, 并保持原符号位不变。 并保持原符号位不变。 为减少误差(保持精度), ),可用附加 为减少误差(保持精度),可用附加 线路, 线路,保留右移过程中丢掉的一位或几位 的高位,供以后舍入操作用。 的高位,供以后舍入操作用。
其中, 除外( 其中,M=-1/2除外(即[M]补=11.1000 ) 除外 补
12
当运算的结果(和 差 不是规格化数时 不是规格化数时, 当运算的结果 和/差)不是规格化数时,需 将它转变成规格化数。 将它转变成规格化数。
13
(1)左规 )
11 .0001 + 00 .1001 11. 1010 尾数的绝对值小于二分之一 即|M|<1/2 | 应左移规格化,左规, 应左移规格化,左规,M ,阶码-移位的位数 阶码 移位的位数
11011011 01010100
21
计算过程: ① 对阶操作 阶差∆E=[EX]补+[-EY]补 =00010+11100=11110 X阶码小,MX右移2位,保留阶码E=00100。 [MX]补=00 00 110 110 11 下划线上的数是右移出去而保留的附加位。
权 22
010.01 110.1
23 ×0.01001 23 ×0.1101
对应位权值相同
对应位权不一样,不能直接相加减 对应位权不一样,
对阶:使两数阶码相等(小数点实际位置对齐)。 对阶:使两数阶码相等(小数点实际位置对齐)。
5
(1)“对阶”原则: ) 对阶”原则:
原则:小阶向大阶看齐。 原则:小阶向大阶看齐。
3.5 浮点数的运算方法
1
浮点数比定点数的表示范围宽, 浮点数比定点数的表示范围宽,有效精度 更适合于科学与工程计算的需要。 高,更适合于科学与工程计算的需要。当要 求计算精度较高时,往往采用浮点运算。 求计算精度较高时,往往采用浮点运算。
2
3.5.1 浮点数的加减法运算
浮点数的表示形式(以 为底进行讨论 为底进行讨论): 浮点数的表示形式 以2为底进行讨论 : N=M·2E M为浮点数的尾数,一般为绝对值小于1 为浮点数的尾数,一般为绝对值小于 为浮点数的尾数 的规格化二进制小数, 的规格化二进制小数,用原码或补码形式表 示; E为浮点数的阶码,一般是用移码或补码 为浮点数的阶码, 为浮点数的阶码 表示的整数。 表示的整数。
9
2、尾数的加/减运算( MX±MY ) 、尾数的加 减运算 减运算(
执行对阶后,两尾数进行加 减运算 减运算, 执行对阶后,两尾数进行加/减运算,得到两数 之和/差 之和 差。
10
3、规格化操作 、
设尾数M的数值部分有 位 设尾数 的数值部分有n位,规格化数的 的数值部分有 范围为: 范围为: 如尾数M用原码表示时 用原码表示时: 如尾数 用原码表示时:
14
若运算结果是非规格化数, 若运算结果是非规格化数,例如尾数是 11.1XX…X或00.0XX…X形式,就需要 形式, 或 形式 将尾数左移,每左移一位,阶码减1, 将尾数左移,每左移一位,阶码减 ,直至 满足规格化条件为止( 满足规格化条件为止(即尾数最高有效位的 真值为1,或尾数符与最高有效位不等)。 真值为 ,或尾数符与最高有效位不等)。 这个过程称为左规 左规。 这个过程称为左规。
25
1/2≤|[ ]原|≤1-2-n |[M] |[
如尾数M用原码表示时: 如尾数 用原码表示时: 用原码表示时
1/2≤[M]补≤1-2-n (当M为正 [ ] 为正) 当 为正 1/2≤|[ ]补|≤1(当M为负 。 |[M] 为负)。 |[ 当 为负
11
双符号位的原码规格化尾数, 双符号位的原码规格化尾数,其数值的 原码规格化尾数 最高位为1; 最高位为 ; 双符号位的补码规格化尾数, 补码规格化尾数 双符号位的补码规格化尾数,应是 00.1XX…X(正) (X可为 或1) 可为0或 ) ( 可为 可为0或 ) 或11.0XX…X(负) (X可为 或1) ( 可为
17
4、舍入 、
在执行右规或对阶时, 在执行右规或对阶时,尾数低位上的数值 会移掉,使数值的精度受到影响,常用“ 会移掉,使数值的精度受到影响,常用“0” 入法。 舍“1”入法。 入法
18
5、检查阶码是否溢出 、
阶码溢出表示浮点数溢出。 阶码溢出表示浮点数溢出。在规格化和舍 入时都可能发生溢出,若阶码正常, 入时都可能发生溢出,若阶码正常,加/减 减 运算正常结束。 运算正常结束。 若阶码下溢,则置运算结果为机器零, 若阶码下溢,则置运算结果为机器零,若 上溢,则置溢出标志。 上溢,则置溢出标志。
22
② 尾数相加 [MX]补+[MY]补 =000011011011+1101010100 =1110001010 11
23
规格化操作 ③ 规格化操作 左规,移1位,结果=1100010101 10;阶码 , 左规, 位 结果 阶码-1, 阶码 E=00011。 。
24
④ 舍入 附加位最高位为1,在所得结果的最低 位+1,得新结果: [M]补=1100010110,M=-0.11101010。 ⑤ 判溢出 阶码符号位为00,故不溢出,最终结果 为:X+Y=2011·(-0.11101010)
3
设有两浮点数X 设有两浮点数X,Y实现X±Y运算,其中: 实现X 运算,其中: X=MX·2EX; Y=MY·2EY。其中MX,MY均为规格化 其中M 数。 执行以下五步完成运算。 执行以下五步完成运算。 五步完成运算
4
1、对阶 、
例:
22×0.1001 23×0.1101
权 21
10.0 1 11 0.1
7
(3) “对阶”操作 ) 对阶”操作:
比较两浮点数阶码的大小, 比较两浮点数阶码的大小,求出其差 ∆E,并保留其大值 ,E=max(EX,EY)。 ,并保留其大值E, 。 当∆E≠0时,将阶码值小的数的尾数右移 时 ∆E位,并将其阶码值加上 ,使两数的 位 并将其阶码值加上∆E, 阶码值相等。 阶码值相等。
6
(2)小阶向大阶对齐的原因: )小阶向大阶对齐的原因:
当阶码小的数将尾数右移并相应增加阶 码时,舍去的仅是尾数低位部分,误差很小。 码时,舍去的仅是尾数低位部分,误差很小。 若让阶码大的数将尾数左移并相应减少 阶码,就会丢失尾数的高位部分, 阶码,就会丢失尾数的高位部分,这会导致 错误的结果。 错误的结果。
19
为规格化浮点数加减运算流程。 图3.8为规格化浮点数加减运算流程。 为规格化浮点数加减运算流程
图3.8 规格化浮点数加减运算流程
20
两浮点数相加, 例3.45 两浮点数相加,求X+Y。 。 已知: 已知:X=2010·0.11011011, Y=2100·(-0.10101100) 在机器中的浮点补码表示形式为( 解 :X和Y在机器中的浮点补码表示形式为(双符号位) 和 在机器中的浮点补码表示形式为 双符号位)
15(2)右规 )00 .0101 + 00 .1101 01. 0010 |M|>1 | 应右移规格化,右规, 应右移规格化,右规,M
,阶码+1 阶码
16
若运算结果尾数发生溢出, 若运算结果尾数发生溢出,例如尾数为
10.XX…X或01. XX…X形式,这并 或 形式, 形式 不表明浮点结果会溢出, 不表明浮点结果会溢出,此时需调整 阶码,将尾数右移一位,阶码加1, 阶码,将尾数右移一位,阶码加 ,称 右规。 为右规。
8
尾数右移时,对原码表示的尾数, 尾数右移时,对原码表示的尾数,符 号位不参加移位, 号位不参加移位,尾数数值部分的高位补 0;对补码表示的尾数,符号位参加右移, ;对补码表示的尾数,符号位参加右移, 并保持原符号位不变。 并保持原符号位不变。 为减少误差(保持精度), ),可用附加 为减少误差(保持精度),可用附加 线路, 线路,保留右移过程中丢掉的一位或几位 的高位,供以后舍入操作用。 的高位,供以后舍入操作用。
其中, 除外( 其中,M=-1/2除外(即[M]补=11.1000 ) 除外 补
12
当运算的结果(和 差 不是规格化数时 不是规格化数时, 当运算的结果 和/差)不是规格化数时,需 将它转变成规格化数。 将它转变成规格化数。
13
(1)左规 )
11 .0001 + 00 .1001 11. 1010 尾数的绝对值小于二分之一 即|M|<1/2 | 应左移规格化,左规, 应左移规格化,左规,M ,阶码-移位的位数 阶码 移位的位数