如何实现将float类型与二进制进行互相转换
答案:2 悬赏:80 手机版
解决时间 2021-03-16 07:17
- 提问者网友:却不属于对方
- 2021-03-16 03:09
如何实现将float类型与二进制进行互相转换
最佳答案
- 五星知识达人网友:雾月
- 2021-03-16 03:35
float 按 IEEE 754 规定存放。
可以用 联合体 按16进制 输出它的4 个字节,再 1位拉4位成 2进制。
反之 亦然。
例如:
#include
union FS {
float f;
char s[4];
} fs;
int main( )
{
int i;
fs.f=12.345;
for (i=3;i>=0;i--) printf("%02x ",0xff & fs.s[i]);
return 0;
}
输出: 41 45 85 1f
2进制: 01000001 01000101 10000101 00011111
可以用 联合体 按16进制 输出它的4 个字节,再 1位拉4位成 2进制。
反之 亦然。
例如:
#include
union FS {
float f;
char s[4];
} fs;
int main( )
{
int i;
fs.f=12.345;
for (i=3;i>=0;i--) printf("%02x ",0xff & fs.s[i]);
return 0;
}
输出: 41 45 85 1f
2进制: 01000001 01000101 10000101 00011111
全部回答
- 1楼网友:想偏头吻你
- 2021-03-16 05:04
float b=2.38;
unsigned short s=256;
void f2bin(float *p)
{
char c[sizeof(float)*8];unsigned long n;int i=0;
if(sizeof(float)!=sizeof(long))exit(1);
n=*((unsigned long*)p);
do
{
c[i++]=n%2;
n/=2;
}while (n);
for (i--;i>=0;i--)
{
printf("%d",c[i]);
}
printf("\n");
}
void us2bin(unsigned short *p)
{
char c[sizeof(unsigned short)*8];unsigned int n;int i=0;
if(sizeof(unsigned short)!=sizeof(unsigned short ))exit(1);
n=*((unsigned short*)p);
do
{
c[i++]=n%2;
n/=2;
}while (n);
for (i--;i>=0;i--)
{
printf("%d",c[i]);
}
printf("\n");
}
main()
{
f2bin(&b);
us2bin(&s);
}
数组转什么?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯