永发信息网

如何实现将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
全部回答
  • 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); } 数组转什么?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯