> 文章列表 > 【数据存储】浮点型在内存中的存储

【数据存储】浮点型在内存中的存储

【数据存储】浮点型在内存中的存储

       

目录

一、存储现象

二、IEEE标准规范

         1.存储

         2.读取

三、举例验证

        1.存储

        2.读取


浮点型存储的标准是IEEE(电气电子工程师学会)754制定的。

一、存储现象

        浮点数由于其有小数点的特殊性,有很多浮点数是不能精确存储的,如:3.14,5.3,等等都不能在内存中以3.14或者5.3的形式存储。

二、IEEE标准规范

        

         1.存储

        如上图所示,32位单精度浮点数存储的标准是1位符号位+8位指数位+23位有效数字位。

        其中,符号位S与正负数标准相同,0就代表是正浮点数,1就代表是负浮点数。

        接下来是指数位E,它的计算与十进制的科学计数法相同,二进制序列想表示成1.xxx的小数点向左移动了几位,就是几,在存储的过程中需要加上127/2047(为了能表示出负的指数位)。

        最后留给有效数字M的位有23位,这23位中放的都是1.xxx中xxx的内容,因为每个浮点数都表示为了1.xxx,所以将“1.”省略,这样可以提高1位的精度。

         2.读取

        读取与存储是互逆的过程。

        第一位符号位S照常读取。

        后8位是指数位M,要分三种情况进行读取:

        1)8位中有0有1,这是正常的情况,如果是float,那就将这个二进制序列减去127就得到真实的M。

        2)8位全为0,说明存的时候指数位是-127或者-2047,为了拟合这个很小的数字,在读取时指数位规定为1-127 = 126,有效数字不再加“1.”,直接加“0.”。

        3)8位全为1,说明存的时候指数位是0。

        最后23位是有效数字E,按照二进制规则进行读取。

三、举例验证

        以3.14为例。

        1.存储

        2.读取