程序中,浮点型存储

来源:互联网 发布:部落冲突三王升级数据 编辑:程序博客网 时间:2024/05/22 09:04

根据IEEE754标准

只列举float类型单精度的问题,float以32位存储。

如,十进制数0.5,二进制表示为0.1,( =2^(-1) ),浮点数中以32位存储,存储格式为,0 01111110 00000000000000000000000   (符号位1位,指数位8位,尾数位23位)

其中:

0                  01111110     00000000000000000000000

符号位(s)   指数(e)          尾数(0.m)


浮点型的表示都是1.XXXXXX×2^(n),所以尾数的存储自动省略第一位的1,


因此((-1)^s)*(1+0.m)*2^(e-127)           // 解释127的来源,127=2^7-1

代入可得,s=0,e=126,m=0

((-1)^0)*(1+0)*2^(126-127) =2^(-1)=1.0*2(-1)= 0.1          =     0.5;

                                                                  二进制     二进制          十进制


再一例,十进制数7.625,二进制数111.101,浮点数存储格式为,0 10000001 11101000000000000000000

代入可得,s=0,e=129,m=11101,0.m=0.11101

((-1)^0)*(1+0.11101)*2^(129-127) =1.11101*2^(2)   =111 .101         =     7.625;

                                                                                                二进制                  十进制


如下程序为输入一个数,得到float的存储格式 

#include<iostream>


void main()
{
//exe2();

float a;

std::cin>> a;
int num = *(int*)&a;
for (int i = 0; i < 32; i++)
{
if ((int)num&(1 << (31 - i)))
std::cout << 1;
else
std::cout << 0;
}

}


第一次写博客,请各位批评指正。

原创粉丝点击