浮点表示是对形如 的有理数进行编码,对于极大数和极小数的表示,以及实数运算的近似值运算来说非常有用。
二进制小数
要理解浮点数,首先需要考虑含有小数的二进制数字。一个任意进制的数,它的每一位都有一个权重,而这个权重与它的进制以及小数点的位置有关。对于二进制数,考虑一个形如 的表示法(小数点位置在与之间),其中每一位的取值范围都为0和1,用公式来表示即是
位于小数点左边的位的权是2的正幂,右边的权则是2的负幂。通过这种表示法,可以很容易发现,二进制小数点左移一位相当于将这个数除以2,而右移一位相当于这个数乘2。事实上,对与2相关的除法或乘法就常采用左移或右移。
然而,小数的二进制表示法只能表示那些能够被写成 的数,其他的值只能被近似表示;并且,在一个m+n+1位的数中,小数点的位置固定,表数的范围会很有限。由于这些局限性,我们需要一个实用的浮点数表示方法。
IEEE浮点表示
IEEE浮点标准用 的形式来表示一个浮点数:
- 符号位 s 决定数的正(s=0)负(s=1);
- 尾数 M 是一个二进制小数,范围为 [1, 2) 或 [0, 1),是由小数字段frac和阶码决定的。根据阶码的不同,尾数 M 表示为 1.f 或 0.f ,导致了尾数的范围为 [1, 2) 或 [0, 1);
- 阶码 E 的作用是对尾数加权,这个权重是。<