首页 > 系统相关 >数据在内存中的存储---浮点型

数据在内存中的存储---浮点型

时间:2023-03-22 15:04:44浏览次数:48  
标签:10 1023 有效数字 --- 浮点 内存 127 分配

数据在内存中,有int short char 等等---他们在limit.h中定义

而double float long double 在float.h中定义

    IEEE   S(符号位) E(指数)  M(有效数字)

             (-1) ^ s * M * 2 ^ E 

对于32位(单精度)来说  第一位分配给S  接着8位分配给E ,剩下的23位分配给M

/ - -------- -----------------------

  S      E                 M

对于64位(双精度)来说  第一位分配给S  接着11位分配给E ,剩下的52位分配给M

/ - ----------- ----------------------------------------------------

  S      E                 M

对于M来说,因为要存储的是1.--- (默认个位数的第一个总是) 所以,统一的把第一个1去掉,等到读取的时候再把1加上

E是一个无符号数,但是我们通常存储数据的时候,会遇到负值,所以存入内存值时,需要加上一个中间数,对于8位的E,这个中间值是127,对于11位的E,这个中间值是1023。比如2^10次方的E是10,存储的时候存在内存中的是10+127=137,即10001001

0.5的二进制是0.1

   E不为全0也不为全1                                                                                     则E需要减去一个127(1023)

   E位全0时                                                                                                    浮点数E为 1-127或者1-1023,即为真实值,有效数字(M)不再加上第一位的1,而是还原为0.xxxxxxxxx的小数,表示无限接近于0

    E位全1时                                                                                                    不做相应讨论,有效数字(M)全部为0;表示+-无穷大(正负取决于正负号)




标签:10,1023,有效数字,---,浮点,内存,127,分配
From: https://blog.51cto.com/u_15841362/6142629

相关文章