了解二进制浮点数运算

    所有的浮点数值计算都遵循IEEE 754规范。

    IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43位以上,很少使用)与延伸双精确度(79位元以上,通常以80位元实做)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE格式与算术,但有些将其列为非必要的。例如,IEEE 754问世之前就有的C语言。IEEE754标准包括IEEE算术,但不算作强制要求(C语言的float通常是指IEEE单精确度,而double是指双精确度)。

    表示位元的约定

    我们将电脑上一个长度为W的字(word)其中的位元,从内存地址低端到高端,以0到W−1的整数编码,通常将内存地址低端的位写在最右边,以让编号最小的位元与最低效位元(least significant bit或lsb,代表最小位数,改变时对数值影响最小的位元)一致。声明这一点的必要性在于区分大端法和小端法,X86体系架构是小端序的数据存储。

    整体呈现

   二进制浮点数是以符号数值表示法格式储存,将最高效位元指定为符号位元(sign bit);“指数部份”,即次高效的e位元,为浮点数中经指数偏差(exponent bias)处理过后的指数;“小数部份”,即剩下的f位元,为有效位数(significand)减掉有效位数本身的最高效位元。

32位单精度
单精度二进制小数,使用32位存储。
1 8 23 位长
+-+——–+———————–+
|S| Exp | Fraction |
+-+——–+———————–+
31 30 23 22 0 位编号 (从右边开始为0)
偏正值 +127
64位双精度
双精度二进制小数,使用64位存储。
1 11 52 位长
+-+——–+———————–+
|S| Exp | Fraction |
+-+——–+———————–+
63 62 52 51 0 位编号 (从右边开始为0)
偏正值 +1023

详细介绍,请参考:https://baike.baidu.com/item/IEEE%20754/3869922?fromtitle=IEEE754%E6%A0%87%E5%87%86&fromid=10427270&fr=aladdin

猜你喜欢

转载自blog.csdn.net/dingpf1209/article/details/80320992