ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

浮点数在内存中的存储

浮点数在内存中的存储

一 国际标准

根据国际标准IEEE754,任意的二进制浮点数可以表示为一下的形式:

二 存储方式

1.32位的浮点数,最高一位存储符号位S,接着8位存储指数E,剩下的23位存储有效数字M;

2.对于64位的浮点数,最高一位存储符号位S,接着11位存储E,剩下的52位存储有效数字M;

三 存储过程

1·将浮点数表示为国际标准形式,然后s存入最高位;

2.对于指数E我们默认E是以一个无符号整数存储的,这样可以节省一个bite的空间,那我们怎么区分E的正负呢?E的存储范围是0~255(0~2047),们将E加上一个中间数127(1023),然后以二进制的形式存到后八个bite之中;

3.对于有效数字M的存储,1<=M<2;所以M==1.xxxxxx形式(因为M是二进制数所以x值之只能是0or1);我们可以省略1,然后将小数部分以二进制的形式存储在x之中;

四 读取过程

将M,S直接读出然后将内存中的E-127取出,然后根据公式v=(-1)^s*M*2^E,计算出结果

两种特殊情况:E存储时=0;

表示2^E会非常小所以整个数就趋近于0;

E存储全是1时E非常大

2^E会非常大表示无穷;

举例9.0的存储形式因为机器是小端存储,内存从低到高;

M=1.001,E=3,V=9.0,S=0;

返回列表