【数据存储】浮点型在内存中的存储
目录
一、存储现象
二、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为例。