浮点数存储小例子

#include <iostream>
#include <stdio.h>
#include <string.h>
//#include <conio.h>

using namespace std;

int main(void)
{
        float a = 1.0f;
        cout << (int)a << endl;
        cout << &a << endl;
        cout << (int&)a << endl;
        printf("&a = %08x,(int)a = %d\n",&a,(int)a);

        unsigned char *ptr = (unsigned char*)&a;
        for(int i = 0; i < sizeof(a); i++)
        {
                printf("ptr+i = %08x,*(ptr+i) = %08x\n",ptr+i,*(ptr+i));
        }
        cout << endl;

        long b = 1065353216;
        printf("b = %08x\n",b);

        float c = 0.0f;
        cout << (int)c << endl;
        cout << &c << endl;
        printf("&c = %08x,(int)c = %d\n",&c,(int)c);
        return 0;
}            

1bit8bit23bit
0011111110(23个)
00+127 
000(23个)

1.0 = 1.0*2^0,所以指数部分为0,最终的十六进制为:3F 80 00 00

参考: http://blog.csdn.net/wuna66320/article/details/1691734,这里讲的很清楚


程序结果:

1
0xbfec97fc
1065353216
&a = bfec97fc,(int)a = 1
ptr+i = bfec97fc,*(ptr+i) = 00000000
ptr+i = bfec97fd,*(ptr+i) = 00000000
ptr+i = bfec97fe,*(ptr+i) = 00000080
ptr+i = bfec97ff,*(ptr+i) = 0000003f


b = 3f800000
0
0xbfec97ec
&c = bfec97ec,(int)c = 0



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值