题目
输入一个浮点数,输出浮点数的二进制码。
实现思路
1.二进制表示浮点数:以0为原点向左移是2的整数次幂,向右移是逐级除2
类似 8 4 2 1 0 0.5 0.25 0.125 …
例如0.625的二进制码(0.101);
2.使用消1法:把输入的浮点数乘2;如果大于1,就减去1,且在小数点后一次输出一个1。如果小于1,则不减,在小数点后一次输出一个0。
3.二进制表示的浮点数有限,像0.3就无法表述,如果运算超过一定次数就输出ERROR返回。
代码实现
#include<stdio.h>
int main(){
double num;
scanf("%lf",&num);
int a[32];
int i=0,j;
while(num>0){
num=num*2;
if(num>=1){
num=num-1;
a[i]=1;
i++;
}else{
a[i]=0;
i++;
}
if(i>31){
printf("ERROR");
return ;
}
}
printf("0.");
for(j=0;j<i;j++){
printf("%d",a[j]);
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)