类似形如\(b_mb_{m-1}\cdots{}b_1b_0.b_{-1}b_{-2}\cdots{}b_{-n-1}b_{-n}\)的表示法,其中\(b_i\)的取值范围为0或1,该表示法所表示的数定义如下:
符号\(“.”\)为二进制小数点,点左边的位的权是2的正幂,点右边的位的权是2的负幂。
IEEE浮点数标准用\(V=(-1)^s\times M \times 2^E\)的形式来表示一个数:
符号:s决定这个数是负数(s=1)还是正数(s=0),对于数值0的符号位解释作为特殊情况处理。
尾数:M是一个二进制小数,它的范围是\(1\thicksim 2-\varepsilon\)(规格化的),\(0\thicksim 1-\varepsilon\)(非规格化的)。
阶码:E的作用是对浮点数加权,这个权重是2的\(E\)次幂(可能为负)。
阶码字段:exp;小数字段:frac。
根据阶码字段exp的值,被编码的值可以分为四种不同的情况:
阶码字段exp:
注意此时e不能全为0也不能全为1,对于单精度E的取值范围为:\(-126\thicksim +127\),而双精度是\(-1022 \thicksim +1023\)。
小数字段frac:
阶码字段exp:
小数字段frac:
当阶码exp全为1,小数域全为0时,若\(s=0\)时是\(+\infty\),若\(s=1\)时是\(-\infty\)。
当阶码exp全为1,小数域不全为0时,结果值为\(NaN\),即“Not a Number”。
浮点数能够使用整数排序函数来排序,将浮点数位模式解释为无符号数时,大小顺序不变。
由于浮点运算只能近似地表示实数运算,所以在很多情况下需要进行舍入
把浮点值\(x\)和\(y\)看成实数,而某个运算\(\bigodot\)定义在实数上,则浮点运算为:
这是对实际运算的精确结果进行舍入后的结果
原文:https://www.cnblogs.com/BigMario/p/14464510.html