189 8069 5689

浮点数的存储形式-创新互联

float在内存中的存储形式:

成都创新互联专注于嘉禾企业网站建设,响应式网站建设,商城网站制作。嘉禾网站建设公司,为嘉禾等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

先看下面一道例题:

                float *p = (float *)#

                printf( "num=%d\n", num);

                printf( "*p=%d\n", *p);

                *p = 5.0;

                printf( "num=%d\n", num);

                printf( "*p=%f\n", *p);

浮点数的存储形式

浮点数的存储形式

这是因为float在计算机中的存储形式与int存储形式不同造成的:

对于float类型:

浮点数的存储形式

浮点数的存储形式

例如:5.0(101)在内存中的存储形式是

       5.0=(-1)^0*(1.01)*2^2

     0 10000010 01000000000000000000000

有没有对指数位E感到奇怪呢?因为E占有8个bit位,取值范围是0-255,取不到负数,所以我们给E加上一个127再存到指数位中。这样就可以取到

负数。当我们读取这个时给E减去127就行了。

当E为全0时,表示一个接近0的数,因为E为全0时,M将不再加1,m为0.xxxxxxx...的形式,浮点数的指数为1-127,是一个非长小的数。

当E为全1时,如果M为全0,则表示一个正负无穷大的数。

现在对于上面的例题清楚了吧,同一个数分别以float和int的形式去看,看到的结果是不同的。

对于double形式,是一样的,只不过double是8个字节,64个bit位,所以double的指数位是11位(要加一个1023),有效位是52位。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:浮点数的存储形式-创新互联
分享网址:http://jkwzsj.com/article/jshch.html

其他资讯