目录

1.IEEE754标准格式

2.IEEE754标准中的符号码

3.IEEE754标准中的阶码

4.IEEE754标准中的尾数

5.IEEE754标准的真值计算

6.十进制转化成IEEE754标准浮点数

7.IEEE754标准浮点数的范围


1.IEEE754标准格式

在IEEE 754 格式浮点数分 3 个类型的浮点数:分别是 短浮点数 float,长浮点数 double,临时短浮点数 long double,由 3 个部分组成,分别是 符号码,阶码,尾数码,对应部分所占位数,如图所示:

在这里插入图片描述

2.IEEE754标准中的符号码

S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。

3.IEEE754标准中的阶码

在 IEEE 754 浮点数标准中,阶码是用移码表示的,移码的定义:移码 = 真值 + 偏置值;

  • 普通情况下,移码的偏置值为 2^(n-1), 8 位的移码的偏置值为 2^(8-1) = 128D = 1000 0000B;例如:-127D = -0111 1111B , 其移码为 -0111 1111 + 1000 0000 = 0000 0001;
  • 在 IEEE 754 标准中,移码的偏置值是 2^(n-1)-1,8 位的移码的偏置值为 2^(8-1)-1 = 127D = 0111 1111B;

​ 例如:-126D = -0111 1110B ,其移码为 -0111 1110 + 0111 1111 = 0000 0001

注意:8 位中,-127D 和 128D 这 2 个阶码有特殊用途,一般不在正常讨论范围(-126~127),他们的移码分别是:

  • -127D:-0111 1111 + 0111 1111 = 0000 0000;
  • 128D:1000 0000 + 0111 1111 = 1111 1111;

4.IEEE754标准中的尾数

在 IEEE 754 浮点数标准中,尾数码部分采用原码表示,且尾数码隐含了最高位 1,在计算时我们需要加上最高位1,即 1.M,我们通过一个例子来表示:

​ 例如:有一个浮点数,真值为 0.11B ,那么其简略版的 IEEE 754 标准表示为(忽略 符号码 和 阶码):

S(1) E(8) 100 0000 0000 0000 0000 0000
​ 即当 0.11B 这个数在记录为 IEEE 754 标准浮点数时,会这样处理,令 0.11 = 1.1 * 2^(-1) ,尾数码是 1.1000…,然后隐含最高位1,即 1 .1000…。

5.IEEE754标准的真值计算

在上述内容的分析之后,再通过观察分析以下这个 IEEE 754 单精度浮点数格式表示的数,系统性了解如何计算出 IEEE 754 标准浮点数的真值:

1 100 0000 1010 0000 0000 0000 0000 0000
上数分别对应图1-1的中 S(符号码,0 正,1 负),E (阶码) ,M (尾数数值)为:

  • S(红色部分):1

1,表示这个浮点数是个负数;

  • E(蓝色部分):10000001

100 0000 1,阶码,其真值为 :移码 - 偏置值 => 1000 0001 - 0111 1111 = 0000 0010 = 2D;

  • M(黑色部分):010 0000 0000 0000 0000 0000

010 0000 0000 0000 0000 0000 表示这个浮点数的尾数部分,其真值为:被隐含的最高位1 + 0.尾数部分 => 1 + 0.01 = 1.01B;

通过对 S,E,M 的分析,我们可以计算出该浮点数的真值,即:

-1.01B * 2^10B = 1.25D * 2^2D = -5.0D或 -1.01B * 2^10B = -101.0B = -5.0D

6.十进制转化成IEEE754标准浮点数

同样地再用一个例子 十进制数转为 IEEE 754 浮点数的例子,加深对 十进制数 与 IEEE 754 浮点数之间的转换的理解。

​ 例如:将十进制数 -0.75 转为 IEEE 754 的单精度浮点数格式表示,分析过程如下:

过程A: -0.75D = -0.11B = -1.1B * 2^(-1B)

  • S:1

-0.75 为负数,故 S 符号码为 1

  • E:0111 1110

由 过程A 得,阶码的真值为 -0000 0001 ,其移码为:-0000 0001 + 0111 1111 = 0111 1110

  • M:100 0000 0000 0000 0000 0000

由 过程A 得,尾数码真值为:-1.1,隐含最高位 1 ,取小数部分,得100 0000 0000 0000 0000 0000

最终结果为:

1 011 1111 0100 0000 0000 0000 0000 0000

7.IEEE754标准浮点数的范围

最小绝对值
IEEE 754 单精度浮点型表示的的最小绝对值:尾数码全为 0 ,阶码真值为 -126D(对应的移码为 0000 0001B),此时整体的值为 1.0B * 2^(-126D)

最大绝对值
IEEE 754 单精度浮点型表示的的最大绝对值:尾数码全为 1 ,阶码真值为 127D(对应的移码为 1111 1110B),此时整体的值为 1.111…B * 2^(127D

 关于阶码真值为 -127 和 128
一般我们正常探讨的阶码区间是 -126D ~ 127D,而真值 -127D 的阶码为 0000 0000B,真值 128D 的阶码为 1111 1111B。

阶码真值为 -127
当阶码全为 0 ,尾数不全为 0,表示 非规格化小数 ,用来表示比最小绝对值还要小的数,即
尾数码 隐含的最高位不是 1,而是 0;
阶码真值 固定为 -126,而非 -127;
当阶码全为 0 ,尾数全为 0,表示 真值 +/- 0 ;
阶码真值为 128
当阶码全为 1 ,尾数全为 0,表示 正负无穷大 +/- ∞

当阶码全为 1 ,尾数不全为 0,表示非数值 NaN(Not a Number)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐