预习浮点数的表示
浮点数的规范化
- 在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化。
IEEE 754浮点数的标准
-
ms为数符,表示浮点数的符号,E为阶码部分,用移码表示,M是尾数部分,用原码表示。
-
短浮点数数符占1位;阶码占8位,以2为底,用移码表示,阶码偏置值为127(阶码全1表示无限大,E的范围是1~254,空出全0表示非规格化数);尾数部分为23位。
-
长浮点数数符占1位;阶码占11位,以2为底,用移码表示,阶码偏置值为1023(阶码全1表示无限大,E的范围是1~2046,空出全0表示非规格化数);尾数部分为52位。
-
隐藏位技术:
既然非 0 值浮点数的尾数数值最高位必定为 1,则在保存浮点数到内存前,通过尾数左移, 强行把该位去掉, 用同样多的尾数位就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。 -
全0阶码全0尾数:一般情况下+0和-0是等效的。
-
全0阶码非0尾数:非规格化数的特点是阶码为全0,尾数高位有一个或几个连续的0,但不全为0。非格式化数隐藏位为0,用于处理阶码下溢,使得出现比最小规格化数更小的结果时,程序能继续运行。
-
全1阶码全0尾数:引入无穷大的时候使得在计算过程中出现异常的情况下也能继续进行下去,并且可为程序提供错误检测功能。
-
全1阶码非0尾数:根据尾数最高位的不同决定是否进行异常处理。
-
阶码非全0非全1:规格化非0数因为特殊值的存在,除去全0全1解码后,单精度阶码个数为254,最大阶数为127。