浮点数的运算方法
浮点数的运算方法
浮点数的运算方法浮点数是计算机中一种表示实数的数据类型,其特点是可以表示带有小数部分的数字。
在进行浮点数的运算时,需要考虑到浮点数的精度问题、舍入误差以及运算顺序等因素。
浮点数的表示方法为:±m×be,其中m为尾数(即小数部分的数值),b为基数或底数,e为指数(表示位移的量)。
1.浮点数加法运算:-对两个浮点数的指数进行比较,将较小指数的浮点数的尾数左移指数之差的位数,使两个浮点数的小数点对齐。
-对齐后的尾数相加,得到一个和。
-对和进行规格化,即将结果的尾数进行处理,使其满足指定的位数限制。
-对规格化后的结果进行舍入运算,得到最终结果。
2.浮点数减法运算:-先将减数的指数调整与被减数的指数相等。
-对齐后的尾数相减,得到一个差。
-对差进行规格化和舍入运算,得到最终结果。
3.浮点数乘法运算:-将两个浮点数的指数相加,得到加法的和,并相应地调整两个浮点数的尾数。
-尾数相乘,得到一个乘积。
-对乘积进行规格化和舍入运算,得到最终结果。
4.浮点数除法运算:-将被除数的指数减去除数的指数,得到差,并相应地调整两个浮点数的尾数。
-尾数相除,得到一个商。
-对商进行规格化和舍入运算,得到最终结果。
在进行浮点数运算时需要注意一些问题:-浮点数的精度问题:由于浮点数的尾数有限位数,所以会存在精度丢失的问题。
这就意味着进行浮点数运算时,可能会出现舍入误差,导致结果有微小的偏差。
-运算顺序:浮点数的运算顺序可能会影响最终结果。
在连续进行多次浮点数运算时,可能会得到不同的结果。
这是因为浮点数的运算不满足交换律和结合律。
因此,在编程中需要谨慎选择运算顺序,以避免结果的不确定性。
-溢出和下溢问题:由于浮点数的范围限制,可能会出现溢出(结果超出浮点数的表示范围)或下溢(结果过小,无法表示)的情况。
针对这些情况,需要进行特殊处理,如返回特定的错误码或进行科学计数法表示。
在实际编程中,可以使用编程语言提供的浮点数运算库或内置函数来进行浮点数运算,以确保运算结果的准确性和可靠性。
浮点数计算方式
浮点数计算方式浮点数是计算机中用来表示实数的一种数据类型。
它由一个小数部分和一个指数部分组成,可以表示非常大或非常小的数值范围。
浮点数的计算方式是基于浮点数的表示规范和运算规则进行的。
本文将介绍浮点数的计算方式,并探讨其中的一些注意事项。
一、浮点数的表示方式在计算机中,浮点数通常采用IEEE 754标准进行表示。
根据该标准,浮点数由三部分组成:符号位、指数位和尾数位。
其中,符号位用于表示浮点数的正负性,指数位用于表示浮点数的指数部分,尾数位用于表示浮点数的小数部分。
通过这种方式,计算机可以表示非常大或非常小的实数。
二、浮点数的四则运算浮点数的四则运算(加法、减法、乘法和除法)是基于IEEE 754标准进行的。
在进行浮点数的四则运算时,需要注意以下几点:1. 精度丢失:由于浮点数的表示方式是有限的,所以在进行浮点数的运算时,可能会出现精度丢失的情况。
这是因为某些实数无法准确表示为有限位数的浮点数。
因此,在进行浮点数计算时,应注意精度丢失可能会产生的误差。
2. 舍入误差:由于浮点数的表示方式是基于二进制的,而实数是十进制的,所以在进行浮点数计算时,可能会出现舍入误差。
这是因为某些十进制数无法准确表示为二进制数。
因此,在进行浮点数计算时,应注意舍入误差可能会对计算结果产生影响。
3. 无穷大和NaN:浮点数的运算结果可能会出现无穷大(Infinity)或不确定值(NaN)。
无穷大表示计算结果超出了浮点数的表示范围,而NaN表示计算结果无法确定。
在进行浮点数计算时,应注意处理这些特殊情况,以避免出现错误结果。
三、浮点数计算中的问题和解决方法在进行浮点数计算时,可能会遇到一些问题,如计算结果不准确、计算速度较慢等。
为了解决这些问题,可以采取以下方法:1. 增加计算精度:可以增加浮点数的位数,从而提高计算精度。
例如,可以使用双精度浮点数(64位)替代单精度浮点数(32位),以提高计算精度。
2. 使用精确计算:可以使用精确计算方法,如使用有理数进行计算,从而避免浮点数计算中的精度丢失和舍入误差。
浮点数的运算方法
浮点数的运算方法浮点数是计算机中用于表示实数的一种数据类型,由于实数是无限的,而计算机只能存储有限的信息,所以必然存在精度误差。
浮点数的运算涉及到加法、减法、乘法和除法等基本运算,以及开方、幂函数等高级运算。
1.加法运算:浮点数相加时,先将较小的浮点数调整为与较大的浮点数相同的指数,然后进行尾数的相加,最后对结果进行规格化处理,即进行舍入操作,得到最终的结果。
2.减法运算:浮点数相减的原理与加法相同,只是在相减之前,需要将两个浮点数的指数调整为相等,然后进行尾数的相减操作,最后同样需要对结果进行规格化处理。
3.乘法运算:浮点数相乘时,将两个浮点数的指数相加,然后将尾数相乘得到结果的尾数部分,最后对结果进行规格化处理。
4.除法运算:浮点数除法的原理与乘法类似,先将两个浮点数的指数相减,然后将尾数相除得到结果的尾数部分,最后同样需要进行规格化处理。
5.开方运算:浮点数的开方运算是通过求解多项式的根来实现的,常用的方法有牛顿法、二分法和二次近似法等。
这些方法都是通过迭代的方式,逐步逼近平方根的值,直到达到所需的精度。
6.幂函数运算:浮点数的幂函数运算可以通过连乘或连乘的方式实现。
幂函数运算的精度取决于底数和指数的精度以及所需的结果精度。
在浮点数的运算过程中,需要注意以下几个常见问题:1.精度丢失:浮点数的表示是有限的,不可避免地存在精度误差,特别是在进行连续的浮点数运算时,会导致误差累积,可能导致结果的不准确。
2.舍入误差:浮点数的结果需要进行舍入操作以保持一定的精度。
舍入规则有多种,如四舍五入、向上取整、向下取整等,选择合适的舍入规则可以减小误差。
3.溢出和下溢:浮点数的范围是有限的,当计算结果超出范围时,会发生溢出;当结果接近零但无法表示时,会发生下溢。
这两种情况都需要进行特殊处理。
4. 特殊数值:浮点数中有几个特殊的数值,如无穷大(Infinity)、非数值(NaN)和零(0)。
这些特殊值的运算需要按照特定的规则进行处理,以免引起错误。
浮点数的加减乘除运算步骤
1、浮点加减法的运算步骤设两个浮点数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*2102、浮点乘除法的运算步骤①阶码运算:阶码求和(乘法)或阶码求差(除法)即[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第一步:阶码相加※※2+000。
浮点数的运算步骤
浮点数的运算步骤浮点数的加减运算⼀般由以下五个步骤完成:对阶、尾数运算、规格化、舍⼊处理、溢出判断⼀、对阶所谓对阶是指将两个进⾏运算的浮点数的阶码对齐的操作。
对阶的⽬的是为使两个浮点数的尾数能够进⾏加减运算。
因为,当进⾏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-y]补=11,100;10.110001, 尾数符号位出现“10”, 需右规。 ③规格化 右规后得 [x-y]补=11,101;11.0110001 ④舍入处理 采用0舍1入法,其尾数右规时末位丢1,则 [x-y]补=11,101;11.011001 ⑤溢出判断 经舍入处理后阶符为“11”,不溢出,故最终 结果: x-y= 2-011×(-0.100111)
舍入操作实例
[x]补舍入前 1.01110000 1.01111000 1.01110101 1.01111100 舍入后 1.0111(不舍不入) 1.0111 (舍) 1.0111 (舍) 1.1000 (入) 对应的真值 -0.1001 -0.1001 -0.1001 -0.1000 对应的真值
2.
3.
浮点乘除法运算
设两浮点数
x Sx r j y y Sy r
jx j y
jx
则
x y (Sx S y ) r
1. 2.
x Sx jx j y r y Sy
阶码运算 尾数运算
1. 阶码运算
若阶码用补码运算,乘积的阶码为[jx]补+[jy]补,商的 阶码为[jx]补-[jy]补。 若阶码用移码运算,则 [jx]移=2n+ jx -2n≤jx<2n (n为整数的位数) [jy]移=2n+ jy -2n≤jy<2n (n为整数的位数)
这一步操作是将两个加数的小数点对齐。
数向右移,每右移一位,阶码加“1”, 直到两数阶码相同为止。
尾数右移时可能会发生数码丢失,影响
精度。
例:两浮点数
x = 0.1101×201, y = -(0.1010)×211,求x+y。
浮点数的运算方法
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
浮点数计算
2.浮点数加减运算举例 有两浮点数为 A=0.101110×2-01 × B=-(0.101011)×2-10 × 假设这两数的格式:阶码4位 假设这两数的格式:阶码 位,用移 偏置值为2 表示;尾数8位 码(偏置值为 3) 表示;尾数 位,用补 码表示,包含一位符号位, 码表示,包含一位符号位,即 阶码 尾数 [A]浮=0111;0.1011100 ; [B]浮=0110;1.0101010 ;
2.除法步骤 两浮点数相除, 两浮点数相除 , 其商的阶码应为相 除两数的阶码之差, 除两数的阶码之差 , 其商的尾数应为相 除两数的尾数之商。 除两数的尾数之商。即: A÷B=(MA÷MB)× ( E A −E B ) ÷ × 2 ⑴尾数调整 为了保证商的尾数是一个定点小数, 为了保证商的尾数是一个定点小数 , 首先需要检测|MA|<|MB|。如果不小于, 首先需要检测 < 。如果不小于, 右移一位, 则MA右移一位,EA+1→EA,称为尾数调 因为A、 都是规格化数 都是规格化数, 整 。 因为 、 B都是规格化数, 所以最多 调整一次。 调整一次。
1.乘法步骤 两浮点数相乘, 两浮点数相乘 , 其乘积的阶码应为 相乘两数的阶码之和, 相乘两数的阶码之和 , 其乘积的尾数应 为相乘两数的尾数之积。 为相乘两数的尾数之积。即: A×B=(MA×MB)× A + E B ) × × 2 (E ⑴阶码相加 两个浮点数的阶码相加, 两个浮点数的阶码相加 , 如果阶码 用补码表示, 无须校正; 用补码表示 , 无须校正 ; 当阶码用偏置 值为2 的移码表示时, 值为 n 的移码表示时 , 阶码相加后要减 去一个偏移量2 去一个偏移量 n。
1.浮点数加减运算步骤(续) 第 ⑤ 和 ⑥ 种情况在在定点加减运算 中称为溢出; 但浮点加减运算中, 中称为溢出 ; 但浮点加减运算中 , 只表 明此时尾数的绝对值大于1, 明此时尾数的绝对值大于 ,而并非真正 的溢出。 的溢出 。 这种情况应将尾数右移以实现 规格化。 这个过程称为右规。 规格化 。 这个过程称为右规 。 尾数每右 移一位,阶码相应加1( 移一位,阶码相应加 (EC+1→EC)。 右规=C 右规 s1⊕Cs2 右规最多只有一次。 右规最多只有一次。
浮点运算
2.5浮点运算与浮点运算器2.5.1浮点数的运算规则浮点数的形式X=Mx * 2E x▲ 尾数的右移: 若尾数是原码表示,每右移一位,符号位不参加移位,尾数高位补0;若尾数是补码表示,每右移一位,符号位参加右移,并保持补码的符号不变。
一、浮点加法和减法设有两个浮点数:X=Mx * 2E x Y=My * 2E y它们的加减步骤是:1、对阶——使两个数的阶码相等,才能进行尾数的加减。
对阶原则——小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移),每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差△E 。
例1:两浮点数X=201*0.1101, Y=211*(-0.1010),将两个数对阶。
解:假设两数在计算机中以补码表示。
[△E]补=[Ex]补 – [Ey]补=[Ex]补 + [–Ey]补=00 01 + 11 01=11 10即△E=-2,表示Ex 比Ey 小2,因此将X 的尾数右移2位:右移一位,得[X]浮=00 10,00.0110再右移一位,得[X]浮=00 11,00.0011对阶完毕。
2、尾数求和+ 尾数和为:3、规格化(1)对于补码来说 规格化(2)规格化的方法浮点数的尾数相加后得到补码的形式M ,对比符号位和小数点后的第一位,如果它们不等,即为00. 1…和11. 0…的形式,就是规格化的数;如果它们相等,即00. 0…或11. 1…,就不是规格化的数,此时要进行左规格化,或左规。
向左规格化——尾数左移1位,阶码减1。
当结果出现01.…或10. …的形式时,要进行右规格化,或右规。
00 001111 011011 1001 正数:00. 1… 负数:11. 0…向右规格化——尾数右移1位,阶码加1。
4、舍入在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定的误差,因此要进行舍入处理。
舍入的方法——“0舍1入”:如果右移时,被丢掉数位的最高位是0则舍去,反之则将尾数的末位加“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 ) 、尾数的加 减运算 减运算(
执行对阶后,两尾数进行加 减运算 减运算, 执行对阶后,两尾数进行加/减运算,得到两数 之和/差 之和 差。
浮点乘法、除法运算
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.对齐小数点位置:首先,需要将参与运算的浮点数进行小数点的对齐,使其具有相同的小数位数,这样才能正确进行运算。
2.符号位处理:对于有符号的浮点数,需要首先对其符号位进行处理,即判断是否有正负号的变化,以便后续的运算。
3.阶码对齐:浮点数的运算涉及到对阶码的操作。
阶码表示了浮点数
的指数部分。
对于两个浮点数,它们的阶码可能不同,因此需要将它们的
阶码进行对齐。
对齐阶码后,还需要比较两个阶码的大小,确定哪个数应
进行放缩操作。
4.尾数运算:对齐阶码后,需要对尾数进行运算。
具体来说,如果两
个浮点数的阶码相同,那么它们的尾数直接相加或相减即可。
如果阶码不同,则需要将尾数按照较小的阶码进行放缩,以便进行运算。
5.规格化:运算完成后,还需要对结果进行规格化。
规格化的目的是
确保表示浮点数的规范形式。
具体来说,就是要保证尾数的最高有效位
(即尾数的最左边一位)为1,并且将阶码调整到正确的位置。
6.溢出判断:最后,需要对运算结果进行溢出判断。
如果运算结果超
出了浮点数所能表示的范围,即超出了尾数所能表示的有效位数,那么就
会发生溢出。
溢出的情况下,一般需要对结果进行舍入或截断处理。
总结起来,浮点数加减运算的步骤包括对齐小数点位置、符号位处理、阶码对齐、尾数运算、规格化和溢出判断等。
这些步骤保证了浮点数的加
减运算的正确性和精度。
浮点数加减法运算
浮点数加减法运算浮点数加减法是计算机中常见的运算方式之一,它可以用于处理浮点数的加法和减法运算。
在计算机科学和数学中,浮点数是一种用于表示实数近似值的数据类型。
浮点数加减法运算是基于浮点数的特定规则进行的,下面将介绍浮点数加减法的原理和应用。
一、浮点数的表示方法在计算机中,浮点数以科学计数法的形式进行表示。
通常采用IEEE 754标准来表示浮点数,其中包括单精度浮点数和双精度浮点数两种形式。
单精度浮点数使用32位来表示,双精度浮点数使用64位来表示。
浮点数的表示形式包括符号位、指数位和尾数位。
二、浮点数加法运算浮点数加法运算的基本原理是将两个浮点数的尾数进行对齐,然后根据指数的差值进行尾数的移位,最后将尾数相加得到结果。
在进行浮点数加法运算时,需要考虑溢出、舍入和规格化等特殊情况。
1. 对齐尾数在进行浮点数加法运算时,首先需要将两个浮点数的尾数进行对齐。
对齐的原则是将尾数中小数点后的位数相等,即将尾数进行右移或左移,直到小数点后的位数相等为止。
2. 指数调整在对齐尾数后,需要根据两个浮点数的指数差值进行尾数的移位。
如果两个浮点数的指数相等,则无需移位;如果两个浮点数的指数不相等,则需要将尾数进行左移或右移,移位的位数为两个指数的差值。
3. 尾数相加在进行尾数移位后,将两个浮点数的尾数进行相加。
相加时要考虑进位的情况,如果相加后的结果超过了尾数的表示范围,则需要进行舍入操作。
4. 舍入在进行浮点数加法运算时,需要进行舍入操作。
舍入操作是根据舍入规则来确定结果的最终值。
常用的舍入规则有四舍五入、向上舍入和向下舍入等。
5. 规格化在得到相加结果后,需要对结果进行规格化处理。
规格化是将结果表示为科学计数法的形式,即将尾数进行左移或右移,直到最高位为1,然后将指数进行相应的调整。
三、浮点数减法运算浮点数减法运算可以转化为浮点数加法运算。
具体而言,将减法转化为加法时,需要将减数取相反数,然后进行相加运算。
1. 取相反数在进行浮点数减法运算时,需要将减数取相反数。
浮点数计算公式
浮点数计算公式浮点数的相关计算公式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. 特殊情况处理零值处理在浮点数的计算中,存在零值的处理,在零值与其他浮点数进行运算时,会有一些特殊的规则。
•当零值与非零值相加时,结果为非零值。
•当零值与非零值相减时,结果为非零值。
浮点数的四则运算
主要内容:
• 浮点加减运算 • 浮点乘除运算
2.7.1 浮点加减运算
1、对阶 ■ 规则:小阶对大阶。
原因:舍去尾数低位,产生误差;若丢失尾数高位,必 然导致错误。
■ 方法:求阶差。
阶差=0,不需对阶; 阶差≠0,小阶码数的尾数右移,右移次数为阶差的绝 对值,其阶码加上阶差的绝对值。
❖X-Y的结果需要右规,将尾数右移1位,阶码加1,得:[X-Y]浮 =0011;00100010,阶码未超出+Emax,∴未溢出
6
4)舍入 ❖由于X+Y是左规,结果不需要舍入; ❖X-Y为右规,若采用末位恒置1法,则
[X-Y]浮=0011;00100011。 ❖若采用0舍1入法,则结果相同。
7
2.7.2 浮点乘除运算
解先将两浮点数表示为规格化的浮点数x浮000100110101y浮0010110101101对阶求阶差e0001补0010补1111补1exey按小阶对大阶原则x的尾数右移1位阶码加1尾数舍入采用末位恒置1法则x浮00100001101162尾数求和差000110111101011011110001即xy浮0010111100013结果规格化及判溢xy的结果是非规格化的数需左规
阶码一般用补码或者移码表示。
若阶码用移码表示,则根据移码的定义可知: [Ex]移 + [Ey]移 = 2n + Ex + 2n + Ey
= 2n + (2n + Ex + Ey) = 2n + [Ex + Ey]移 若直接用移码求阶码之和,结果比两数之和的移码多 了2n,即最高位上多加了一个1. 所以,要求两数和的移码,必须将两数移码之和的最 高位(符号位)取反。
浮点数计算方法ppt
2n>x≥0 0≥x>-2n
对于0,原码机器中往往有“+0”、“-0” 之分,故有两种形式:
[+0]原 = 0.000...0 [ -0]原 = 1.000...0
采用原码表示法简单易懂,但它的最大 缺点是加法运算复杂。这是因为,当两数相 加时,如果是同号则数值相加;如果是异号, 则要进行减法。而在进行减法时还要比较绝 对值的大小,然后大数减去小数,最后还要 给结果选择符号。为了解决这些矛盾,人们 找到了补码表示法。
2. 补码表示法
我们先以钟表对时为例说明补码的概念。
假设现在的标准时间为4点正; 而有一只表已
经7点了,为了校准时间,可以采用两种方法:
一是将时针退 7-4=3 格;一是将时针向前拨12-
3=9格。这两种方法都能对准到4点,由此可以
看出,减3和加9是等价的,就是说9是(-3)对12
的补码,可以用数学公式表示:
浮点数所表示的范围远比定点数大。一台 计算机中究竟采用定点表示还是浮点表示,要根 据计算机的使用条件来确定。一般在高档微机 以上的计算机中同时采用定点、浮点表示,由使 用者进行选择,而单片机中多采用定点表示。
[例1] 若浮点数x的754标准存储格式为
(41360000)16,求其浮点数的十进制数值。
4. 移码表示法
移码通常用于表示浮点数的阶码。由于
阶码是个n位的整数,假定定点整数移码形式
为 x0x1x2…xn时,对定点整数移码的传
统定义是:
[x]移=2n+x
2n>x≥-2n
若阶码数值部分为5位,以x表示真值,
则: [x]移=25+x
25>x≥- 25
小结:上面的数据四种机器表示法中,移码 表示法主要用于表示浮点数的阶码。由于补 码表示对加减法运算十分方便,因此目前机 器中广泛采用补码表示法。在这类机器中, 数用补码表示,补码存储,补码运算。也有 些机器,数用原码进行存储和传送,运算时 改用补码。还有些机器在做加减法时用补码 运算,在做乘除法时用原码运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阶码位 尾数数码位 总位数
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) ( )
EX
浮点数: 浮点数 X = M s Es E m-1 ...E1 E 0 M-1 M-2 ...M-n IEEE 标准:尾数用原码 标准:
浮点数是数学中实数的子集合, 浮点数是数学中实数的子集合,由一个纯小数乘上一个指数 值来组成。在计算机内,其纯小数部分被称为浮点数的尾数 尾数, 值来组成。在计算机内,其纯小数部分被称为浮点数的尾数, 值的浮点数,要求尾数的绝对值必须 对非 0 值的浮点数,要求尾数的绝对值必须 >= 1/2,称满足这 , 种表示要求的浮点数为规格化表示; 种表示要求的浮点数为规格化表示; 规格化表示 把不满足这一表示要求的尾数, 把不满足这一表示要求的尾数,变成满足这一要求的尾数 的操作过程,叫作浮点数的规格化处理 规格化处理, 的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改 阶码实现。 阶码实现。
注意:阶码计算结果的符号位在此变了一次反, 注意:阶码计算结果的符号位在此变了一次反,结果为 -2 的 移 的阶码值小, 的阶码值1100(即 +4); 码,是X的阶码值小,使其取 Y 的阶码值 的阶码值小 ( ); 因此,修改 [MX]补 =00 0011011011(即右移 2 位) 因此, (
浮点数算术运算
浮点数加减运算
X = MX * 2
EX
Y = MY * 2
EY
(1)对阶操作,求阶差: ∆E= EX -EY, )对阶操作,求阶差: 使阶码小的数的尾数右移∆E位, 其阶码取大的阶码值; 其阶码取大的阶码值; (2)尾数加减; )尾数加减; (3)规格化处理; )规格化处理; (4)舍入操作,可能带来又一次规格化; )舍入操作,可能带来又一次规格化; (5)判结果的正确性,即检查阶码上下溢出 )判结果的正确性,
浮点数格式:关于移码的知识 浮点数格式:关于移码的知识 移码
X = MX * 2 浮点数: 浮点数 X = M s Es E m-1 ...E1 E 0 M-1 M-2 ...M-n
移码表示只用于表示整数,只用在浮点数的阶码部分。 移码表示只用于表示整数,只用在浮点数的阶码部分。 一位符号位和 n 位数值位组成的移码 其定义为; 位数值位组成的移码, 其定义为; [E]移 = 2n + E -2n<=E<2n 表示范围: 表示范围: 00000000 11111111 EX
浮点数算术运算
浮点数乘除运算 X = MX * 2
EX EY
Y = MY * 2
(1) 阶码加、减:乘:EX+EY ,除:EX- EY 阶码加、 (2) 尾数乘、除:乘:EX*EY , 除:EX / EY 尾数乘、 (3) 规格化处理; 规格化处理; (4) 舍入操作,可能带来又一次规格化; 舍入操作,可能带来又一次规格化; (5) 判结果的正确性,即检查阶码上下溢出 判结果的正确性,
(2)尾数相乘:MX*MY = 0.1011*(-0.1101) )尾数相乘: = -0.10001111 (3) (4) (5) 已是规格化数 不必舍入 也不溢出 已是规格化数, 不必舍入, 最众乘积 [MX]移 = 1 1110 10001111, , 即 26 * (-0.10001111) )
浮点数在计算机内的格式
X = MX * 2
EX
浮点数: 浮点数 X = M s Es E m-1 ...E1 E 0 M-1 M-2 ...M-n IEEE 标准:阶码用移码,基为 ;尾数用原码 标准:阶码用移码,基为2; 阶码用移码,尾数用原码表示浮点数的好处: 阶码用移码,尾数用原码表示浮点数的好处: 表示浮点数的好处 (1) 机器零为浮点数的所有各位均为零; 机器零为浮点数的所有各位均为零; (2) 二浮点数比大小时,可不必区分阶码位 二浮点数比大小时, 和数据位,可视同比二定点小数一样对待 和数据位,可视同比二定点小数一样对待
浮点数在计算机内的格式
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, 才能满足浮点数规格化表示的要求; 既然非 0 值浮点数的尾数数值最高位必定为 1,则在保存浮 , 点数到内存前,通过尾数右移, 强行把该位去掉, 点数到内存前,通过尾数右移 强行把该位去掉 用同样多的尾 数位就能多存一位二进制数,有利于提高数据表示精度, 数位就能多存一位二进制数,有利于提高数据表示精度,称这 种处理方案使用了隐藏位技术。 隐藏位技术 种处理方案使用了隐藏位技术。 当然,在取回这样的浮点数到运算器执行运算时, 当然,在取回这样的浮点数到运算器执行运算时,必须先 恢复该隐藏位。 恢复该隐藏位。 EX
浮点数在计算机内的格式
X = MX * 2
EX
X = Ms Es Em-1 ...E1 E0 M-1 M-2 ...M-n IEEE 标准:阶码用移码,基为 标准:阶码用移码,基为2
按国际电子电气工程师协会规定的国际通用标准, 按国际电子电气工程师协会规定的国际通用标准,浮点 数的阶码用整数给出,并且要用移码表示, 数的阶码用整数给出,并且要用移码表示,用作为以 2为底 为底 的指数的幂。 的指数的幂。既然该指数的底一定为 2 ,可以不必在浮点数 的格式中明确表示出来, 只需给出阶码的幂值即可。 的格式中明确表示出来, 只需给出阶码的幂值即可。 移码表示只用于表示整数,只用在浮点数的阶码部分, 移码表示只用于表示整数,只用在浮点数的阶码部分, 只用于表示整数 浮点数的阶码部分 其定义类似于整数的补码定义,差别在符号位。 其定义类似于整数的补码定义,差别在符号位。 移码的符号位是 表示负, 表示正, 移码的符号位是 0 表示负,1 表示正,与补码的符号位 正好相反,移码是指机器数在数轴上有个移位关系; 正好相反,移码是指机器数在数轴上有个移位关系; 移码的数值位则与补码的数值位完全相同 则与补码的数值位完全相同。 移码的数值位则与补码的数值位完全相同。
(4)舍入处理:采用 0 舍 1 入方案,要入,在最低位加 1 入方案,要入, )舍入处理:
11 00010101 + 00 00000001 11 00010110 (其原码表示为 1 11101010) ) (5)检查溢出否:和的阶码为 1011,不溢出 )检查溢出否: , 计算后的 [X]移 = 1 1011 11101010 ,即 23*(-0.11101010)
为运算方便, 补码形式: 为运算方便,尾数写成模 4 补码形式:
[MX]补= 00 11011011 [MY]补= 11 01010100
浮点数加运算举例
X=2010*0.11011011, Y=2100*(-0.10101100) , ( ) (1)计算阶差: )计算阶差: ∆E = EX -EY= EX +(-EY) = 1 010 + 0 100 = 0 110
四. 浮点运算器与浮点数运算
浮点运算器通常由 处理阶码的 处理尾数的 浮点运算器通常由 处理阶码的 和 处理尾数的 两个定点运算器组成
在早期的小或微型机中, 在早期的小或微型机中,浮点运算器通常以 任选件方式提供给用户 , 主要用于计算浮点数
浮点数加减运算
右归) 对阶 执行加减 规格化 舍入 (右归)判溢出 右归
(2)尾数求和:00 0011011011 )尾数求和: + 11 01010100 11 1000101011
浮点数加运算举例
X=2010*0.11011011, Y=2100*(-0.10101100) , ( ) (3)规格化处理: )规格化处理:
相加结果的符号位与数值的最高位同值, 相加结果的符号位与数值的最高位同值,应执行一次 结果的符号位与数值的最高位同值 左规操作,故得 左规操作 故得 [MX]补 = 1 000101011,[EX]移 = 1 011 ,