#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的二进制形式
                    
                    
                目前暂无任何回答
- 0 回答
- 0 关注
- 1368 浏览
添加回答
举报
0/150
	提交
		取消
	