#include <stdio.h>
#include <stdlib.h>
int main()
{
    typedef struct _FP_SIGLE{
        unsigned int nMantissa : 23;  //尾数部分
        unsigned int nExponent :  8;  //指数部分
        unsigned int nSign     :  1;  //符号位
    } FP_SINGLE;
    float a = 19.625;
    FP_SINGLE* p = (FP_SINGLE*)&a;
    printf("%d, %#X, %#X\n", p->nSign, p->nExponent-127, p->nMantissa);
    system("pause");
    return 0;
}
运行结果:
0, 0X4, 0X1D0000
为什么运行结果是这个,十六进制转换回小数二进制却不是原来的19.625的二进制形式
 精慕门4541864
精慕门4541864 随时随地看视频慕课网APP
随时随地看视频慕课网APP
相关分类