第03章 3.5 浮点数的运算方法
浮点数的运算方法
浮点数的运算方法浮点数是计算机中一种表示实数的数据类型,其特点是可以表示带有小数部分的数字。
在进行浮点数的运算时,需要考虑到浮点数的精度问题、舍入误差以及运算顺序等因素。
浮点数的表示方法为:±m×be,其中m为尾数(即小数部分的数值),b为基数或底数,e为指数(表示位移的量)。
1.浮点数加法运算:-对两个浮点数的指数进行比较,将较小指数的浮点数的尾数左移指数之差的位数,使两个浮点数的小数点对齐。
-对齐后的尾数相加,得到一个和。
-对和进行规格化,即将结果的尾数进行处理,使其满足指定的位数限制。
-对规格化后的结果进行舍入运算,得到最终结果。
2.浮点数减法运算:-先将减数的指数调整与被减数的指数相等。
-对齐后的尾数相减,得到一个差。
-对差进行规格化和舍入运算,得到最终结果。
3.浮点数乘法运算:-将两个浮点数的指数相加,得到加法的和,并相应地调整两个浮点数的尾数。
-尾数相乘,得到一个乘积。
-对乘积进行规格化和舍入运算,得到最终结果。
4.浮点数除法运算:-将被除数的指数减去除数的指数,得到差,并相应地调整两个浮点数的尾数。
-尾数相除,得到一个商。
-对商进行规格化和舍入运算,得到最终结果。
在进行浮点数运算时需要注意一些问题:-浮点数的精度问题:由于浮点数的尾数有限位数,所以会存在精度丢失的问题。
这就意味着进行浮点数运算时,可能会出现舍入误差,导致结果有微小的偏差。
-运算顺序:浮点数的运算顺序可能会影响最终结果。
在连续进行多次浮点数运算时,可能会得到不同的结果。
这是因为浮点数的运算不满足交换律和结合律。
因此,在编程中需要谨慎选择运算顺序,以避免结果的不确定性。
-溢出和下溢问题:由于浮点数的范围限制,可能会出现溢出(结果超出浮点数的表示范围)或下溢(结果过小,无法表示)的情况。
针对这些情况,需要进行特殊处理,如返回特定的错误码或进行科学计数法表示。
在实际编程中,可以使用编程语言提供的浮点数运算库或内置函数来进行浮点数运算,以确保运算结果的准确性和可靠性。
浮点数计算方式
浮点数计算方式浮点数是计算机中用来表示实数的一种数据类型。
它由一个小数部分和一个指数部分组成,可以表示非常大或非常小的数值范围。
浮点数的计算方式是基于浮点数的表示规范和运算规则进行的。
本文将介绍浮点数的计算方式,并探讨其中的一些注意事项。
一、浮点数的表示方式在计算机中,浮点数通常采用IEEE 754标准进行表示。
根据该标准,浮点数由三部分组成:符号位、指数位和尾数位。
其中,符号位用于表示浮点数的正负性,指数位用于表示浮点数的指数部分,尾数位用于表示浮点数的小数部分。
通过这种方式,计算机可以表示非常大或非常小的实数。
二、浮点数的四则运算浮点数的四则运算(加法、减法、乘法和除法)是基于IEEE 754标准进行的。
在进行浮点数的四则运算时,需要注意以下几点:1. 精度丢失:由于浮点数的表示方式是有限的,所以在进行浮点数的运算时,可能会出现精度丢失的情况。
这是因为某些实数无法准确表示为有限位数的浮点数。
因此,在进行浮点数计算时,应注意精度丢失可能会产生的误差。
2. 舍入误差:由于浮点数的表示方式是基于二进制的,而实数是十进制的,所以在进行浮点数计算时,可能会出现舍入误差。
这是因为某些十进制数无法准确表示为二进制数。
因此,在进行浮点数计算时,应注意舍入误差可能会对计算结果产生影响。
3. 无穷大和NaN:浮点数的运算结果可能会出现无穷大(Infinity)或不确定值(NaN)。
无穷大表示计算结果超出了浮点数的表示范围,而NaN表示计算结果无法确定。
在进行浮点数计算时,应注意处理这些特殊情况,以避免出现错误结果。
三、浮点数计算中的问题和解决方法在进行浮点数计算时,可能会遇到一些问题,如计算结果不准确、计算速度较慢等。
为了解决这些问题,可以采取以下方法:1. 增加计算精度:可以增加浮点数的位数,从而提高计算精度。
例如,可以使用双精度浮点数(64位)替代单精度浮点数(32位),以提高计算精度。
2. 使用精确计算:可以使用精确计算方法,如使用有理数进行计算,从而避免浮点数计算中的精度丢失和舍入误差。
第03章 3.5 浮点数的运算方法
移码运算:
[X+Y]移=[X]移+[Y]补 [X-Y]移=[X]移+[-Y]补 双符号位: 00 ~ 负数,无溢出 01 ~ 正数,无溢出 10 ~ 上溢 11 ~ 下溢 溢出条件:最高符号位为1
13/17 13
例如:已知 X=2010· 0.11011011, Y=2100· (-0.10101100) ,求X+Y。 (同上题,但改为阶用移码) 解: (1) 对阶 阶差ΔE=[EX]移+[-EY]补 =01010+11100=00110 (-2) X阶码小,MX右移2位,阶码取100。
(4) 舍入(0舍1入)
附加位最高位为1,在结果的最低位+1,得新结果: [M]补=11.00010110, M=-0.11101010。
(5) 判溢出
阶码移码符号位为01,故不溢出,最终结果为: X+Y=2011· (-0.11101010) 。
15/17 15
二、浮点数的乘法运算
X×Y=(MX×MY)· 2EX+EY
[MX]补=00 .00 110 110 11
下划线上的数是右移出去而保留的附加位。
14/17 14
(2) 尾数相加
[MX]补+[MY]补 =00.0011011011+11.01010100=11.10001010 11
(3) 规格化操作
左规,移1位,结果=11.00010101 10; 阶码-1,E=01100+11111=01011。(+3)
(1) 检测操作数是否为0,并置结果数符( ).
(2) 加阶:两数阶码相加,得积的阶码。 (3) 两数的尾数做定点乘法,得积的尾数。 (4) 否溢出。 (阶码运算、尾数规格化时都可能溢出)
浮点数的运算方法
阶码位 尾数数码位 总位数
1 1 1
8 11 15
23 52 64
32 64 80
浮点数的阶码的位数决定数的表示范围, 浮点数的阶码的位数决定数的表示范围, 阶码的位数决定数的表示范围 尾数的位数决定数的有效精度 的位数决定数的有效精度。 尾数的位数决定数的有效精度。
浮点数在计算机内的格式
X = MX * 2
负数 正数
[X]补 = X 2n+1 + X 0 ≤ X < 2n -2n ≤ X ≤ 0 0
机器数
浮点数格式:关于移码的知识 浮点数格式:关于移码的知识 移码
8 位的阶码能表示 位的阶码能表示-128~+127,当阶码为 ,当阶码为-128时,其补码表 时 示为 00000000,该浮点数的绝对值 -128,人们规定此浮点数的 ,该浮点数的绝对值<2 人们规定此浮点数的 值为零, 机器零。 值为零,若尾数不为 0 就清其为 0,并特称此值为机器零。 ,并特称此值为机器零 位数值位组成的移码, 其定义为; 一位符号位和 n 位数值位组成的移码 其定义为; [E]移 = 2n + E -2n<=E<2n 负数 正数 +127 0 -128 机器数 表示范围: 00000000 ~ 11111111 表示范围: 8 位移码表示的机器数为数的真值 向右平移了 在数轴上向右平移 在数轴上向右平移了 128 个位置
(2)尾数相除:MX/MY = 0.1011/(-0.1101) )尾数相除: = -0.1101 (3) (4) (5) 已是规格化数 不必舍入 也不溢出 已是规格化数, 不必舍入, 最众的商 [MX]移 = 1 0110 1101, , 即 2-2 *(-0.1101) ( )
浮点数的运算方法
浮点数的运算方法浮点数是计算机中用于表示实数的一种数据类型,由于实数是无限的,而计算机只能存储有限的信息,所以必然存在精度误差。
浮点数的运算涉及到加法、减法、乘法和除法等基本运算,以及开方、幂函数等高级运算。
1.加法运算:浮点数相加时,先将较小的浮点数调整为与较大的浮点数相同的指数,然后进行尾数的相加,最后对结果进行规格化处理,即进行舍入操作,得到最终的结果。
2.减法运算:浮点数相减的原理与加法相同,只是在相减之前,需要将两个浮点数的指数调整为相等,然后进行尾数的相减操作,最后同样需要对结果进行规格化处理。
3.乘法运算:浮点数相乘时,将两个浮点数的指数相加,然后将尾数相乘得到结果的尾数部分,最后对结果进行规格化处理。
4.除法运算:浮点数除法的原理与乘法类似,先将两个浮点数的指数相减,然后将尾数相除得到结果的尾数部分,最后同样需要进行规格化处理。
5.开方运算:浮点数的开方运算是通过求解多项式的根来实现的,常用的方法有牛顿法、二分法和二次近似法等。
这些方法都是通过迭代的方式,逐步逼近平方根的值,直到达到所需的精度。
6.幂函数运算:浮点数的幂函数运算可以通过连乘或连乘的方式实现。
幂函数运算的精度取决于底数和指数的精度以及所需的结果精度。
在浮点数的运算过程中,需要注意以下几个常见问题:1.精度丢失:浮点数的表示是有限的,不可避免地存在精度误差,特别是在进行连续的浮点数运算时,会导致误差累积,可能导致结果的不准确。
2.舍入误差:浮点数的结果需要进行舍入操作以保持一定的精度。
舍入规则有多种,如四舍五入、向上取整、向下取整等,选择合适的舍入规则可以减小误差。
3.溢出和下溢:浮点数的范围是有限的,当计算结果超出范围时,会发生溢出;当结果接近零但无法表示时,会发生下溢。
这两种情况都需要进行特殊处理。
4. 特殊数值:浮点数中有几个特殊的数值,如无穷大(Infinity)、非数值(NaN)和零(0)。
这些特殊值的运算需要按照特定的规则进行处理,以免引起错误。
浮点数的运算步骤
浮点数的运算步骤浮点数的加减运算⼀般由以下五个步骤完成:对阶、尾数运算、规格化、舍⼊处理、溢出判断⼀、对阶所谓对阶是指将两个进⾏运算的浮点数的阶码对齐的操作。
对阶的⽬的是为使两个浮点数的尾数能够进⾏加减运算。
因为,当进⾏M x·2Ex 与M y·2Ey加减运算时,只有使两浮点数的指数值部分相同,才能将相同的指数值作为公因数提出来,然后进⾏尾数的加减运算。
对阶的具体⽅法是:⾸先求出两浮点数阶码的差,即⊿E=E x-E y,将⼩阶码加上⊿E,使之与⼤阶码相等,同时将⼩阶码对应的浮点数的尾数右移相应位数,以保证该浮点数的值不变。
⼏点注意:(1)对阶的原则是⼩阶对⼤阶,之所以这样做是因为若⼤阶对⼩阶,则尾数的数值部分的⾼位需移出,⽽⼩阶对⼤阶移出的是尾数的数值部分的低位,这样损失的精度更⼩。
(2)若⊿E=0,说明两浮点数的阶码已经相同,⽆需再做对阶操作了。
(3)采⽤补码表⽰的尾数右移时,符号位保持不变。
(4)由于尾数右移时是将最低位移出,会损失⼀定的精度,为减少误差,可先保留若⼲移出的位,供以后舍⼊处理⽤。
⼆、尾数运算尾数运算就是进⾏完成对阶后的尾数相加减。
这⾥采⽤的就是我们前⾯讲过的纯⼩数的定点数加减运算。
三、结果规格化在机器中,为保证浮点数表⽰的唯⼀性,浮点数在机器中都是以规格化形式存储的。
对于IEEE754标准的浮点数来说,就是尾数必须是1.M 的形式。
由于在进⾏上述两个定点⼩数的尾数相加减运算后,尾数有可能是⾮规格化形式,为此必须进⾏规格化操作。
规格化操作包括左规和右规两种情况。
左规操作:将尾数左移,同时阶码减值,直⾄尾数成为1.M的形式。
例如,浮点数0.0011·25是⾮规格化的形式,需进⾏左规操作,将其尾数左移3位,同时阶码减3,就变成1.1100·22规格化形式了。
右规操作:将尾数右移1位,同时阶码增1,便成为规格化的形式了。
要注意的是,右规操作只需将尾数右移⼀位即可,这种情况出现在尾数的最⾼位(⼩数点前⼀位)运算时出现了进位,使尾数成为10.xxxx或11.xxxx的形式。
浮点数的加减乘除运算步骤
设两个浮点数X=Mx※2Ex Y=My※2Ey实现X±Y要用如下5步完成:①对阶操作:小阶向大阶看齐②进行尾数加减运算③规格化处理:尾数进行运算的结果必须变成规格化的浮点数,对于双符号位的补码尾数来说,就必须是001×××…×× 或110×××…××的形式, 若不符合上述形式要进行左规或右规处理。
④舍入操作:在执行对阶或右规操作时常用“0”舍“1”入法将右移出去的尾数数值进行舍入,以确保精度。
⑤判结果的正确性:即阶码是否溢出若阶码下溢(移码表示是00…0),要置结果为机器0;若阶码上溢(超过了阶码表示的最大值)置溢出标志。
例题:假定X=0 .0110011*211,Y=0.1101101*2-10(此处的数均为二进制)?? 计算X+Y;解:[X]浮:0 1010 1100110[Y]浮:0 0110 1101101符号位阶码尾数第一步:求阶差:│ΔE│=|1010-0110|=0100第二步:对阶:Y的阶码小,Y的尾数右移4位[Y]浮变为0 1010 0000110 1101暂时保存第三步:尾数相加,采用双符号位的补码运算00 1100110+00 000011000 1101100第四步:规格化:满足规格化要求第五步:舍入处理,采用0舍1入法处理故最终运算结果的浮点数格式为:0 1010 1101101,即X+Y=+0. 1101101*210①阶码运算:阶码求和(乘法)或阶码求差(除法)即[Ex+Ey]移= [Ex]移+ [Ey]补[Ex-Ey]移= [Ex]移+ [-Ey]补②浮点数的尾数处理:浮点数中尾数乘除法运算结果要进行舍入处理例题:X=0 .0110011*211,Y=0.1101101*2-10求X※Y解:[X]浮:0 1 010 *******[Y]浮:0 0 110 1101101第一步:阶码相加[Ex+Ey]移=[Ex]移+[Ey]补=1 010+1 110=1 0001 000为移码表示的0第二步:原码尾数相乘的结果为:0 10101101101110第三步:规格化处理:已满足规格化要求,不需左规,尾数不变,阶码不变。
浮点数的运算方法
EX
X = Ms Es Em-1 ...E1 E0 M-1 M-2 ...M-n IEEE 标准:阶码用移码,基为2
按国际电子电气工程师协会规定的国际通用标准,浮点 数的阶码用整数给出,并且要用移码表示,用作为以 2为底 的指数的幂。既然该指数的底一定为 2 ,可以不必在浮点数 的格式中明确表示出来, 只需给出阶码的~+127,当阶码为-128时,其补码表 示为 00000000,该浮点数的绝对值<2-128,人们规定此浮点数的 值为零,若尾数不为 0 就清其为 0,并特称此值为机器零。 一位符号位和 n 位数值位组成的移码, 其定义为; [E]移 = 2n + E -2n<=E<2n 负数 正数 +127 表示范围: 00000000 ~ 11111111 8 位移码表示的机器数为数的真值 在数轴上向右平移了 128 个位置
注意:计算结果的阶码符号位在此变了一次反, 结果为 +6 的 移码
(2)尾数相乘:MX*MY = 0.1011*(-0.1101) = -0.10001111 (3) (4) (5) 已是规格化数, 不必舍入, 也不溢出 最众乘积 [MX]移 = 1 1110 10001111, 即 26 * (-0.10001111)
浮点数在计算机内的格式
X = MX * 2 浮点数: X = M s Es E m-1 ...E1 E 0 M-1 M-2 ...M-n IEEE 标准:尾数用原码
按国际电子电气工程师协会规定的标准,浮点数的尾数要 用原码表示,即符号位 Ms: 0 表示正,1 表示负,且非 0 值尾数 数值的最高位 M-1 必为 1, 才能满足浮点数规格化表示的要求;
(2)尾数求和:00 0011011011 + 11 01010100 11 1000101011
浮点数运算方法
“恒置1”法:尾数右移时,不论丢掉的最高数值 位是“1”或“0”,都使右移后的尾数末位恒置 “1”。这种方法同样有使尾数变大和变小的两种 可能。
特点:误差范围扩大,但正负误差可以相互抵消,实 现相对容易。
5. 溢出判断
在浮点规格化中已指出,当尾数之和(差)出现 01.××…×或10.××…×时,并不表示溢出,只有 将此数右规后,再根据阶码来判断浮点运算结果是否 溢出。
首先,对每一次运算的结果而言,要保证误差不超过 给定的范围。比如,设机器尾数长39位,要求每次运 算误差不超过末位(即第39位)的“1”,即小于 2-39。 其次在大量的运算过程中要保证误差的平衡,即在每 一次运算时,由于舍入处理,可能使运算结果增大了, 也可能减少了。但总的说来,增加和减少的机会必需 是均等的,否则会产生很大的积累误差。
① ②
Ex
Ey
尾数的加减运算规则与定点数完全相同。 当两浮点数阶码不等时,因两尾数小数点的 实际位置不一样,尾数部分无法直接进行加 减运算。如:x=0.123×103 y=4.56×102 = 0.456×103
浮点加减运算的步骤
1.
对阶,使两数的小数点位置对齐。
尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。
接上例,求和结果为[x+y]补=00,11;11.1001 尾数的第一数值位与符号位相同,需左规,即将其左 移一位,同时阶码减1,得[x+y]补=00,10;11.0010。
4. 舍入
在对阶和右规的过程中,可能会将尾数的低位丢 失,引起误差,影响精度,为此可用舍入法来提 高尾数的精度。
进行舍入时应满足两个要求
浮点数运算方法共69页文档
46、寓形宇内复几时,曷不委心任去 留。
•
47、采菊东篱下,悠然见南山。
Hale Waihona Puke •48、啸傲东轩下,聊复得此生。
•
49、勤学如春起之苗,不见其增,日 有所长 。
•
50、环堵萧然,不蔽风日;短褐穿结 ,箪瓢 屡空, 晏如也 。
浮点数运算方法
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
END
浮点数的运算方法
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 ) 、尾数的加 减运算 减运算(
执行对阶后,两尾数进行加 减运算 减运算, 执行对阶后,两尾数进行加/减运算,得到两数 之和/差 之和 差。
浮点数的四则运算
8
由于补码和移码的数值位相同,符号位相反,因 此可以将移码和补码混合使用,即利用X的移码和Y的 补码之和来表示X+Y的移码。
移码加减运算的溢出判断方法是: Sf1 Sf2=00,结果为负,无溢出; Sf1 Sf2=01,结果为正,无溢出; Sf1 Sf2=10,结果上溢; Sf1 Sf2=11,结果下溢;
10
例 设不含阶符的阶码位数n=4,Ex=-1010,Ey=+ 0111,求[Ex±Ey]移。
解: [Ex]移 =000110,[Ey]补 =000111, [-Ey]补 =111001
2
浮点加减运算(续)
右规和对阶操作时尾数右移,需要进行舍入处理。 计算机中的舍入方法: ❖ 截断法:
将移出的数据一律舍去。该方法简单,但影响精度;
❖ 0舍1入法:
移掉的是1,则尾数末位加1,移掉的是0,则不加。
❖ 末位恒置1法:
将欲保留的末位数据恒置1,无论右移掉的是1还是0,也 无论此时末位是1还是0。
[Ex+ Ey ]移=[Ex]移 + [Ey]补 =000110+000111= 001101,Ex+ Ey=-0011;
[Ex- Ey ]移=[Ex]移 + [-Ey]补 =000110+111001= 111111,结果出现下溢出.
11
2.7.2 浮点乘除运算
一、浮点乘法运算 设两个浮点数为:X=Mx·2Ex,Y=My·2Ey 则:X·Y=(Mx·My)·2(Ex+Ey) 浮点乘法运算的步骤: 1.乘数判0,若有一乘数为0 ,则积为0,无需运算; 2.阶码相加并判溢出;
浮点数的用法-概述说明以及解释
浮点数的用法-概述说明以及解释1.引言1.1 概述概述部分的内容可以涵盖浮点数的基本概念、其在计算机中的重要性以及本文将要讨论的主要内容。
概述:在计算机科学中,浮点数是一种用于表示实数的数值类型。
相比整数类型,浮点数可以表示更广范围的数值,包括小数、分数以及极大或极小的数值。
浮点数的重要性在于它们广泛应用于科学计算、图形处理和工程领域等许多计算机应用中。
本文将深入探讨浮点数的基本概念以及其在计算机中的表示方法。
首先,我们将介绍浮点数的基本概念,包括浮点数的定义和特点。
然后,我们将详细解释浮点数在计算机内部是如何表示的,以及在不同计算机系统中浮点数的表示方法是否存在差异。
除此之外,本文还会探讨浮点数在实际应用中的一些场景和注意事项。
我们将介绍一些常见的浮点数应用场景,例如科学计算、金融建模和图像处理等领域。
同时,我们也会谈到使用浮点数进行计算时需要注意的一些问题,例如浮点数精度损失、舍入误差和比较运算等。
通过阅读本文,读者将能够全面了解浮点数的基本概念和计算机中的表示方法,同时也将对浮点数的应用场景和注意事项有更深入的了解。
这将有助于读者在实际编程和计算过程中更好地理解和处理浮点数,提高计算结果的准确性和可靠性。
1.2 文章结构文章结构是指文章的组织方式和框架,它有助于读者更好地理解和消化文章的内容。
在本文中,我们将介绍浮点数的用法,并以以下三个部分来构建文章结构:1. 引言:在引言部分,我们将对浮点数的用法进行概述,并介绍本文的目的和重要性。
我们将简要解释浮点数的基本概念,并阐述浮点数在计算机中的表示方法,为读者打下基础,使他们能够更好地理解和应用浮点数。
2. 正文:在正文部分,我们将详细讨论浮点数的基本概念,并解释它在计算机中的表示方法。
我们将介绍浮点数的精度和范围,并讨论浮点数的运算和舍入误差等相关问题。
此外,我们还将探讨浮点数在科学计算、图形处理、金融和物理模拟等领域中的应用场景,并提供相应的示例和实际案例,以便读者更好地理解浮点数的用法和意义。
浮点乘法、除法运算
x×y=2(E x+E y)·(M x×M y)x÷y=2(E x-E y)·(M x÷M y)浮点乘法、除法运算2.6.2 浮点乘法、除法运算 1.浮点乘法、除法运算规则设有两个浮点数x和y: x=2E x·M x y=2E y·M y浮点乘法运算的规则是(2.40)即乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。
当然,这⾥也有规格化与舍⼊等步骤。
浮点除法运算的规则是(2.41)商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。
也有规格化和舍⼊等步骤。
2.浮点乘、除法运算步骤浮点数的乘除运算⼤体分为四步: 第⼀步,0 操作数检查;第⼆步,阶码加/减操作;第三步,尾数乘/除操作;第四步,结果规格化及舍⼊处理。
(1) 浮点数的阶码运算 对阶码的运算有+1、-1、两阶码求和、两阶码求差四种,运算时还必须检查结果是否溢出。
在计算机中,阶码通常⽤补码或移码形式表⽰。
补码运算规则和判定溢出的⽅法,前⾯已经讲过。
这⾥只对移码的运算规则和判定溢出的⽅法进⾏讲解。
移码的定义为 [x]移=2n +x 2n >x≥-2n 按此定义,则有 [x]移+[y]移=2n +x+2n +y =2n +(2n +(x+y)) =2n +[x+y]移 即直接⽤移码实现求阶码之和时,结果的最⾼位多加了个1,要得到正确的移码形式结果,必须对结果的符号再执⾏⼀次求反。
当混合使⽤移码和补码时,考虑到移码和补码的关系:对同⼀个数值,其数值位完全相同,⽽符号位正好完全相反。
⽽[y]补的定义为 [y]补=2n +1+y则求阶码和⽤如下⽅式完成:[x+y]移=[x]移+[y]补 (mod 2n +1)[x-y]移=[x]移+[-y]补 [x]移+[y]补=2n +x+2n +1+y =2n +1+(2n +(x+y))即(2.42)同理(2.43) 上⼆式表明执⾏阶码加减时,对加数或减数 y来说,应送移码符号位正常值的反码。
浮点数计算公式
浮点数计算公式浮点数的相关计算公式1. 浮点数的基本运算加法运算浮点数的加法运算可以使用以下公式表示:x + y = (x1 + y1) * 2^e其中,x和y分别是两个浮点数,x1和y1分别是其对应的尾数,e是两个浮点数的指数之差的最大值。
例如,当x =,对应的尾数为,`y = `,对应的尾数为,则其加法运算结果为:+ = ( + ) * 2^(-2) = * 2^(-2) = * =减法运算浮点数的减法运算可以使用以下公式表示:x - y = (x1 - y1) * 2^e其中,x和y分别是两个浮点数,x1和y1分别是其对应的尾数,e是两个浮点数的指数之差的最大值。
例如,当x =,对应的尾数为,`y = `,对应的尾数为,则其减法运算结果为:- = ( - ) * 2^(-2) = * 2^(-2) = * =乘法运算浮点数的乘法运算可以使用以下公式表示:x * y = (x1 * y1) * 2^(e1 + e2)其中,x和y分别是两个浮点数,x1和y1分别是其对应的尾数,e1和e2分别是两个浮点数的指数。
例如,当x =,对应的尾数为,`y = `,对应的尾数为,则其乘法运算结果为:* = ( * ) * 2^(3 + 3) = * 2^6 = * 64 =除法运算浮点数的除法运算可以使用以下公式表示:x / y = (x1 / y1) * 2^(e1 - e2)其中,x和y分别是两个浮点数,x1和y1分别是其对应的尾数,e1和e2分别是两个浮点数的指数。
例如,当x =,对应的尾数为,`y = `,对应的尾数为,则其除法运算结果为:/ = ( / ) * 2^(3 - 3) = 10 * 2^0 = 10 * 1 = 102. 特殊情况处理零值处理在浮点数的计算中,存在零值的处理,在零值与其他浮点数进行运算时,会有一些特殊的规则。
•当零值与非零值相加时,结果为非零值。
•当零值与非零值相减时,结果为非零值。
浮点数计算方法范文
浮点数计算方法范文在浮点数计算中,需要注意一些常见的问题,如舍入误差、溢出和下溢、精度损失等。
下面将详细介绍浮点数计算方法和解决这些问题的方法。
1.浮点数表示:浮点数的表示方法通常采用IEEE754标准,根据不同的精度,可以分为单精度(32位)和双精度(64位)两种。
其中,单精度浮点数的尾数位有23位,指数位有8位;双精度浮点数的尾数位有52位,指数位有11位。
2.舍入误差:由于浮点数的精度有限,进行浮点数计算时会产生舍入误差。
舍入误差可分为绝对误差和相对误差。
绝对误差是实际值与理论值之间的差值,相对误差是绝对误差与理论值之间的比值。
为了减小舍入误差,可以采用一些方法,如增加计算的有效位数、采用更高精度的浮点数表示、舍入策略等。
3.溢出和下溢:在进行浮点数计算时,如果结果超出了浮点数能表示的范围,就会发生溢出。
溢出可以分为正溢和负溢,正溢发生在结果大于浮点数表示的最大值,负溢发生在结果小于浮点数表示的最小值。
为了避免溢出,可以进行溢出检查,当检测到结果即将溢出时,采取适当的处理措施,如舍入、缩放等。
下溢是指结果非常接近于0,但却小于浮点数表示的最小值,可以通过缩放计算结果来避免下溢。
4.精度损失:在进行连续的浮点数计算时,可能会累积一系列小的舍入误差,导致最终结果的精度损失。
为了减小精度损失,可以采用相对精度控制的方法,通过控制舍入策略、增加计算的有效位数等方式来保持较高的数值精度。
5. 特殊值处理:浮点数计算中存在一些特殊值,如NaN(Not a Number)和无穷大(Infinity)。
NaN表示计算结果未定义或不可表示,当出现非法操作时会产生NaN;无穷大表示计算结果超出了浮点数可以表示的范围。
总结起来,浮点数计算是一种对浮点数进行数值计算的方法,需要注意舍入误差、溢出和下溢、精度损失等问题。
为了提高浮点数计算的精度,可以采用增加有效位数、选择合适的舍入策略、减小舍入误差等方法。
同时,对于特殊值的处理也是浮点数计算中需要考虑的问题。
请简述浮点数加减运算的步骤
请简述浮点数加减运算的步骤浮点数加减运算是计算机中进行浮点数加法和减法的基本运算之一、在计算机中,浮点数是通过一个实数的近似值来表示的,由于存储空间的限制,浮点数的表示存在一定的误差。
浮点数加减运算的步骤可以简述如下:1.确定操作数的位数和存储格式:浮点数在计算机中一般使用IEEE754标准进行表示,其中包含一个符号位、指数部分和尾数部分。
根据浮点数的位数和存储格式,确定操作数的数据类型和表示方法。
2.对齐操作数的小数点位置:由于浮点数的小数点位置不同,进行加减运算之前需要先将操作数的小数点位置对齐。
这一步骤通常涉及到指数的调整,将两个操作数的小数点位置对齐。
3.进行尾数的加减运算:对对齐后的操作数的尾数进行加减运算。
加法和减法的运算过程基本相同,只需注意符号位和尾数的正负数的符号位的不同。
4.规格化尾数结果:由于加减运算的结果可能超过原始尾数的表示范围,需要对尾数进行规格化。
规格化操作将尾数的小数点位置进行调整,使其处于浮点数的表示范围内。
5.执行指数调整:由于尾数的规格化操作可能导致指数的变化,需要对指数进行相应的调整。
根据浮点数的表示规则,对指数进行递增或递减的操作,使其与尾数的调整相匹配。
6.处理溢出和舍入:在浮点数加减运算过程中,可能发生溢出或者舍入现象。
溢出指的是结果超出了浮点数的表示范围,需要进行相应的处理;舍入指的是为了满足浮点数的表示精度,对计算结果进行舍入操作。
7.返回运算结果:经过上述步骤的处理,得到最终的运算结果。
需要注意的是,浮点数加减运算存在一定的精度损失和舍入误差。
由于浮点数的表示只能近似表示实数,因此在进行浮点数加减运算时,可能会引入一些误差。
在一些特殊情况下,这些误差可能会积累并影响结果的准确性。
因此,在进行浮点数加减运算时,需要充分考虑浮点数的精度和误差,以及运算过程中的舍入策略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6/17
6
★ 例如(0舍1入法) 设有5位数(其中有一附加位),用原码或补 码表示,舍入后保留4位结果。 [X]原=0.11011 [X]原=0.11100 [X]补=1.00101 [X]补=1.00100 舍入后[X]原= 舍入后[X]原= 舍入后[X]补= 舍入后[X]补= 0.1110 0.1110
下划线上的数是右移出去而保留的附加位。
9/17 9
(2) 尾数相加
[MX]补+[MY]补 =00.0011011011+11.01010100=11.10001010 11
(3) 规格化操作
左规,移1位,结果=11.00010101 10; 阶码-1,E=00011。
(4) 舍入(0舍1入)
附加位最ห้องสมุดไป่ตู้位为1,在结果的最低位+1,得新结果: [M]补=11.00010110, M=-0.11101010。
12/17 12
移码运算:
[X+Y]移=[X]移+[Y]补 [X-Y]移=[X]移+[-Y]补 双符号位: 00 ~ 负数,无溢出 01 ~ 正数,无溢出 10 ~ 上溢 11 ~ 下溢 溢出条件:最高符号位为1
13/17 13
例如:已知 X=2010· 0.11011011, Y=2100· (-0.10101100) ,求X+Y。 (同上题,但改为阶用移码) 解: (1) 对阶 阶差ΔE=[EX]移+[-EY]补 =01010+11100=00110 (-2) X阶码小,MX右移2位,阶码取100。
(5) 判溢出
阶码符号位为00,故不溢出,最终结果为: X+Y=2011· (-0.11101010) 。
10/17 10
练习:已知 X=+0.001100, Y=+0.000101 ,求X-Y(采用补码)。 解: X=2-10· 0.1100, Y=2-11· 0.1010 (1) 对阶 阶差ΔE=[EX]补+[-EY]补 =11.10+00.11=00.01
8/17
8
例如:已知 X=2010· 0.11011011, Y=2100· (-0.10101100) ,求X+Y。 (尾数、阶码皆用补码表示) 解: (1) 对阶 阶差ΔE=[EX]补+[-EY]补 =00010+11100=11110 X阶码小,MX右移2位,阶码取100。
[MX]补=00. 00 110 110 11
5
(4)舍入: 在执行右规或对阶时,尾数低位上的数值会 移掉,使精度受到影响。处理方法有:
★ 截断处理(舍弃)(处理简单,但影响精度)
★ 舍入处理 只要尾数最低位为1,或移出去的几位中有1, 就把尾数的最低位置1,否则保持原有的0值。 最低位恒置1的方法 0舍1入法(常用)(多进行一次加法运算)
● ● ●
(1) 检测操作数是否为0,并置结果数符( ).
(2) 加阶:两数阶码相加,得积的阶码。 (3) 两数的尾数做定点乘法,得积的尾数。 (4) 尾数规格化。
(5) 舍入。 (6) 判断阶码是否溢出。 (阶码运算、尾数规格化时都可能溢出)
16/17 16
三、浮点数的除法运算 X÷Y=(MX÷MY)· 2EX-EY
Y阶码小,MY右移1位,阶码为11.10。
[MY]补=00. 01010(舍去)
11/17 11
(2) 尾数相减 [MX]补+[-MY]补 =00.1100+11.1011=00.0111
(3) 规格化操作 左规,移1位,结果=00.1110; 阶码-1,E=11.01。 (4) 舍入 步骤(1)中已经处理。 (5) 判溢出 阶码符号位为11,故不溢出, 最终结果为:X-Y=2-11· 0.1110。
●
将阶码小的数的尾数右移ΔE位,阶码加ΔE。 原码表示的尾数右移时,符号位不参加移位, 尾数数值部分的高位补0。 补码表示的尾数右移时,符号位参加右移, 并保持原符号位不变。
4/17 4
●
●
(2)尾数相加/减:尾数进行定点加/减运算。 (3)结果规格化:将运算结果转变成规格化数。 ① 若结果的两个符号位不同,表示结果溢出, 此时应“向右规格化”(“右规”),将尾 数 结果右移1位,阶码+1。 ② 若结果的两个符号位相同,表示尾数结果 不溢出。但若最高数值位与符号位相同, 此时应“向左规格化”(“左规”),将尾 数 连续左移,每左移15/17 位,阶码-1,直到最高
[MX]补=00 .00 110 110 11
下划线上的数是右移出去而保留的附加位。
14/17 14
(2) 尾数相加
[MX]补+[MY]补 =00.0011011011+11.01010100=11.10001010 11
(3) 规格化操作
左规,移1位,结果=11.00010101 10; 阶码-1,E=01100+11111=01011。(+3)
3.5 浮点数的运算方法
★ 浮点数的表示形式(设以2为底):
N = M ·2E
其中:
M- 尾数(绝对值小于1的规格化小数)
(用原码或补码表示)
E- 阶码(整数)(用移码或补码表示)
1/17 1
★ 浮点运算中,阶码和尾数分别进行运算。
●
阶码:定点整数
尾数:定点纯小数
●
★ 浮点运算可归结为定点运算,但需增加:
●
阶码的定点运算
运算结果的规格化
2/17 2
●
一、浮点数的加减法运算
设有两浮点规格化数X、Y,实现X±Y运算, 其中:X=MX· 2EX; Y=MY· 2EY。 运算过程分为下面5步:
3/17
3
(1)对阶:使两数阶码相等。 ★ 求ΔE=EX-EY; ★ 若ΔE=0,不需要对阶; ★ 若ΔE≠0,阶码小的数向阶码大的数对齐。
(4) 舍入(0舍1入)
附加位最高位为1,在结果的最低位+1,得新结果: [M]补=11.00010110, M=-0.11101010。
(5) 判溢出
阶码移码符号位为01,故不溢出,最终结果为: X+Y=2011· (-0.11101010) 。
15/17 15
二、浮点数的乘法运算
X×Y=(MX×MY)· 2EX+EY
1.0011 1.0010
舍入后产生了误差,但误差值小于末位的权值。
7/17 7
(5)检查阶码是否溢出:
★ 阶码溢出表示浮点数溢出。
★ 在规格化和舍入时都可能发生溢出, 若阶码正常,加/减运算正常结束。 若阶码下溢(10),则置运算结果为机器零。 若阶码上溢(01),则置溢出标志,机器停止。
●
● ●
(1) 检测操作数是否为0,并置结果数符( ). (2) 尾数调整:使|被除数尾数|<|除数尾数| (此步骤可以防止上溢) (3) 减阶(注意溢出):两数阶码相减得商的阶码。 (4) 两数的尾数做定点除法,得商的尾数。 ★ 结果不需要规格化,为什么? ∵ 操作数在运算前已规格化且做过尾数调整, ∴ 结果必是规格化的,也不会溢出。