目录
一、相关介绍
二、如何存储
(一)步骤一:
(二)步骤二:
(三)步骤三:
三、举例:
四、取出时的相关规则:
1.在浮点型中:1E10表示1.0*(10^10)
2.整形家族的取值范围可在头文件
3.存储的时候需要用到小数的二进制,所以我们先了解一下小数的二进制。
1.国际标准IEEE754规定。任意一个二进制浮点数V可以表示成:(-1)^S * M * 2^E.
解释:
①:-1^(S)表示符号位。当S==0,(-1)^S==-1,此时表示负数;当S==1,(-1)^S==1,此时表示正数。
②:M表示有效数字。且1<=M<2.
③:2^E表示指数位。
这样看可能很抽象,我们举个例子,如下图:
2.接着IEEE754又规定:
①:对于32位的浮点数,最高位的1位存S的值,接着八位存E的值,剩下的23位存有效数字M。
②:对于64位的浮点数,最高位的一位存符号位S,接着11位存指数E,剩下52位存有效数字M。
3.接下来在介绍一些特殊规定
①:对于有效数字M因为用了科学计数法,所以总能写成1.xxxxx...,所以在存储的时候,第一位的1可以被舍去,只保存后.xxxxx..的小数部分,等到读取的时候,再把1给加上去。
目的:这样做可以节省一位有效数字,以32位的浮点数为例,留给M只有23,将1舍去后,等于保存24位有效数字。
②:对于指数E,首先E是一个无符号整数,如果E是八位,他的取值在0到255;如果E是11位,他的取值范围为0到2047;但科学计数法中E可能为负数,所以IEEE754规定,在存储E时要将真实值加上一个中间数以确保E为正数或0,中间数规则如下:
对于8位的E,中间数是127
对于11位的E,中间数是1023
知道上述规则后,就可以存储一个浮点数了,接下来我们以32位下存储5.5为例
对于取出时,E分为三种情况:
1.E不全为0也不全为1(普通情况):计算值减去123(1023)就可得到E的真实值
2.E全为0:这时IEEE754规定E==1-127(1-1023),且M不再加上第一位的1,而是还原为0.xxxx...的小数。这样做的目的是为了表示正负0,以及接近0的数字
3.E全为1时:这时,有效数字M全为0,此时表示该数为正负无穷大。
本次知识到此结束,希望对你有所帮助。