浮点型数据在内存的存储 float double

#include<stdio.h>
/*
       浮点型 在内存中的 存储   在c 语言中有一个协议的标准规定的 

       有这样一个公式    【(-1)的0次方 表示正数   或者  1 次方  表示 负数 】乘以  【M】 乘以 2 乘以 2 的 [E] 次方 

                          (-1)^S*M*2^E

                     其中 M        存在内存 中的 只保留  小数点 后面的数组  ,,1=<M<2 的数

                          E        指数 是 加 127 后  存放在  内存中的    是因为  指数  有可能是负数 不好表示 避免和前面的 S 冲突 

             其中在 32位系统       S 占     1  位   表示 正负数   
                                   E 占     8  位  
                                   M 占    23  位

              其中在64位系统       S 占     1 位     表示 正负数   
                                   E 占    11 位  
                                   M 占    52 位

      这样一个数浮点数    5.5 
            二进制表示   101.1
        科学计算法表示   1.011*2^2    e=E+127=2+127

        放在内存中       0    10000001   00000000000000000000011
                         s      E                M


*/

int main()
{

    int n = 9;                            //00000000 00000000 00000000 00001001              整形数  9 的 二进制  在内存中  源码 反码  补码  都是一养的

    float* pfloat = (float*)&n;             

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

    printf("*pfloat=%f\n", *pfloat);    //把存到内存的数据  以浮点数形式  输出   00000000 00000000 00000000 00001001
                                        //
                                       //                                       0   00000000   00000000000000000001001
                                       //                                       S     E             M
                                       //                                           1.1001*2^-127    即使一个无限 接近  0的 数  0.000000  表示
                                     
                                    

    *pfloat = 9.0;                   //   0 10000010  001000000000000000000000

    printf(" n=%d\n", n);            //0 10000010 001000000000000000000000

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

    return 0;
}
/*
       结果是 
n=9
*pfloat=0.000000

 n=1091567616

*pfloat=9.000000

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值