读书人

新手联合体有关问题

发布时间: 2013-07-01 12:33:04 作者: rapoo

新手求助联合体问题
球大神解答啊,不胜感激

实现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转化为二进制输出
union aaa
{
int ival;
float fval;
};
写一个函数,将一个32位的浮点数转换成二进制输出,请使用上面联合体

[解决办法]
//实现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

读书人网 >C++

热点推荐