浮点数表示格式:
N = (数符)尾数*基数^(阶符)指数
尾数是定点小数,指数为阶码,定点整数,阶符为指数位符号位,数符位尾数和所有浮点数符号位
浮点数运算过程:
先对阶,在计算尾数,最后格式化结果
- 一、对阶
在对使用了科学计数法的数值进行加法运算时,需要先对阶。
比如一个数 A 是 1023000000,我们将它表示为 1.023 x 10^9。
比如一个数 B 是105600000,我们将它表示为 1.056 x 10^8。
我们不能直接对 A 和 B 进行相加,因为它们的 阶级(专用名词为基数)不一样,A 是 9 次方,B 是 8 次方。
所以我们要进行对阶操作,而且是小阶向大阶对齐(为了避免计算后的结果格式化)。
- 二、尾数计算
在进行 A + B 的计算中,因为 B 的阶乘(8)要小于 A 的阶乘(9),所以临时将 B 的数值改为 0.1056 x 10^9。接着再对尾数进行相加,即 1.023 + 0.1056 = 1.179。最后再套上阶乘,结果就是 1.179 x 10 ^9,计算完毕。 - 三、结果格式化
特点:
- 一般尾数用补码,阶码用移码,但在IEEE754标准下尾数也可以是源码
- 阶码的位数决定数的表示范围,位数越多范围越大
- 尾数的位数决定数的有效精度,位数越多精度越高
- 对阶时,小数向大数看齐,损失低位数。
- 对阶是通过较小数的尾数右移实现的
- 尾数规格化的绝对值范围为[0.5 ,1]
- n位移码可表示的最大值2ⁿ⁻¹-1,n位补码浮点数的最小值是-1,最大值是1-2⁻﹙ⁿ⁻¹﹚
注意:
很明显,一个数的浮点表示不是唯一的。当小数点的位置改变时,阶码也随着相应改变,因此可以用多个浮点形式表示同一个数。
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数。规格化就是将尾数的绝对值限定在区间[0.5,1]。当尾数用补码表示时,需要注意如下问题。
①若尾数M>0,则其规格化的尾数形式为M=0.1×××…×,其中,×可为0,也可为1,即将尾数限定在区间[0.5,1]。
②若尾数M<O,则其规格化的尾数形式为M=1.0X××…×,其中,×可为0,也可为1,即将尾数M的范围限定在区间[-1,-0.5]。
如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括Ⅰ位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下。
最大的正数: +(1-2^(-M+1))× 2^(2^R~1-1),最小的负数:-1 ×2(2^(R-1)-1)