#include<stdio.h>
#define N 10
#define M 100
void fun10_2_Z(long number)//十进制整数部分转二进制
{
char ch[M];
int len=0;
if(number==0)
{
printf(“%d”,number);//如果整数部分为零直接输出
}
else
{
while(number)
{
ch[len++]=number%2;//余数放入数组存储
number=number/2;//得出的整数递归除2
}
for( ;len>0;len–)//逆向输出
{
printf(“%d”,ch[len-1]);
}
}
}
void fun10_2_X(double number) //十进制小数部分转二进制
{
int i,len=0;
int arry[N];
while(number)
{
int temp = (int)(number*2);
arry[len++]=temp;
if(len==N)
break; //控制小数点后不超过十位
number = 2*number-temp;
}
printf(“.”);
for(i=0;i<len;i++)
{
printf(“%d”,arry[i]);
}
}
int main()
{
double number;
scanf(“%lf”,&number);
long t=(int)number;//整数部分
double m=number-t;//小数部分
fun10_2_Z(t);
fun10_2_X(m);
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...