首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手联合体有关问题

2013-07-01 
新手求助联合体问题球大神解答啊,不胜感激实现32位float转化为二进制输出union aaa{int ivalfloat fval}

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

实现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

热点排行