IEEE浮点数表示

IEEE标准中浮点数用形如left ( -1 
ight )^{s}*M*2^{E}的格式表示一个小数:

  • s(符号位),s=1代表负数,s=0代表正数。
  • M(尾数),代表小数点之后的数。
  • E(阶数),对刚才的小数进行加权,权重是2的E次幂。

位表示

所以整个浮点数的二进制表示形式由3个部分组成:1位的符号段(s)+ k位的阶码段 + n位的小数字段。
说明:在32位单精度表示中,k=8, n=23;在64位双精度表示中,k=11, n=52;

 
6217760-ac414030a911355e.jpg
 

类别

根据阶码段的值,浮点数可以分为3种不同的情况:

 
6217760-eec7089fb268036e.jpg
 

1.规格化的值

1.1阶码E

这是最普遍的,就是阶码段即非全0,也非全1。此时阶码字段被解读为以偏置(biased)形式表示的有符号整数,即E = e - Bias。此处的e代表阶码段的无符号二进制数,而Bias = 2^{k-1} - 1(单精度是127,双精度是1023)。

1.2尾数M

此处尾数定义为M = 1 + f,f表示小数字段。此处隐含以1开头的尾数表示,因此我们可以把M看成一个二进制表达式为1.******的数字。

2.非规格化的值

2.1阶码E

当阶码段全为0时,所表示的就是非规格化的数字。此时,不同于规格化形式,阶码值E = 1 - Bias,而Bias仍然为2^{k-} - 1

2.2尾数M

不同于规格化形式,尾数M = f,这就是小数字段不包含隐含的1了。
非规格化的数一般用来表示那些非常接近于0的小数。而且也可以用来表示0,即阶码段和小数段全为0。

3.特殊的值

3.1无穷大的值

当阶码段全为1,且小数段全为0时,得到的值表示无穷大,当符号段为1代表负无穷,符号段为0代表正无穷。一般用在表示两个很大的数相乘,结果溢出或零除时。

3.2不是值(NaN)

当阶码段全为1,且小数段非全0时,结果被称为NaN(Not a Number),一般表示一些非法运算。如对负数开根号或无穷数的相互运算时。

3.数字示例

下图表示了8位浮点格式的非负值,且符号段占1位,阶码段占4位,小数段3位,偏置量Bias为2^{3} -1=7

 
6217760-7416f7a9bb33885c.jpg
 

想要获取更多详情,请点击关注:

嵌入式Linux&ARM 

CSDN博客

简书博客

原文地址:https://www.cnblogs.com/leon1124/p/14039697.html