新手求助联合体问题
球大神解答啊,不胜感激
实现32位float转化为二进制输出
union aaa
{
int ival;
float fval;
};
写一个函数,将一个32位的浮点数转换成二进制输出,请使用上面联合体
[解决办法]
#include <stdio.h>
union aaa
{
int ival;
float fval;
};
void f2b(float val, char* str)
{
union aaa a;
int i;
a.fval = val;
for(i = 0; i < 32; i++)
str[i] = ((a.ival >> (31 - i)) & 1) + '0';
str[i] = '\0';
}
int main(void)
{
char str[33];
f2b(23.975, str);
printf("%s\n", str);
return 0;
}
//实现32位float转化为二进制输出
#include <stdio.h>
#include <stdlib.h>
union aaa {
int ival;
float fval;
} a;
int main() {
int i;
char bs[33];
char b[33];
a.fval=1.5f;
i=a.ival;
ltoa(i,b,2);
sprintf(bs,"%032s",b);
printf("%g %s\n",a.fval,bs);
return 0;
}
//1.5 00111111110000000000000000000000