ieee754标准规定了单精度的浮点数在计算机的内存中以4个字节(也就是8个十六进制数)的形式存储,其具体的标准什么的我都已经知道了,现在我需要一个C程序能够实现输入一个8位的16进制数,就能将其转化为对应的浮点数并输出!
我已经试了好多编法,都不行(如附图所示,编译器是用的turbo C++3.0),其中我觉得最靠谱的利用指针和强制类型转化的方法也不行,可能是我的水平太次了,真诚求助各位C语言高手,这是我毕业设计的一部分,如若能成功帮我解决这个问题,必有重谢!
这个程序代码你试了吗?有用吗?我在turbo C++3.0试了,不行呀,结果是-0.00000,你用的什么编译器呀?
追答我用Dev c++和 vc2010 都运行过这个,没问题的,TC3.0太老了,都快20年了
Tc3.0的scanf()函数可能不支持%x输入格式,可以以字符串方式解决
#include
#include
int main()
{
char hexstr[9];
char *pc=hexstr;
long int n=0;
float * pf=(float*)&n ;
printf("n=");
gets(hexstr);
while(*pc)
{
if('0'<=*pc&&*pc<='9')
*pc=*pc-'0';
if('A'<=*pc&&*pc<='F')
*pc= 10+*pc-'A';
if('a'<=*pc&&*pc<='f')
*pc= 10+*pc-'a';
n=n*16+*pc;
pc++;
}
printf("%f",*pf);
getch();
return 0;
}