猿问

一个关于小数储存通过程序输出十六进制的问题

#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
浏览 1315回答 0
0回答
随时随地看视频慕课网APP
我要回答