浮点数转换成二进制

char *ToBinary(char *buffer,float x)
{
	int k=0;
	if(x<0)
	{
		buffer[k++]='-';
		x=-x;
	}
	int a=(int)x;
	float b=x-a;
	char temp[40];
	int i=0;
	if(a==0)
		temp[i++]='0';
	while(a!=0)
	{
		temp[i++]=a%2+48;
		a=a/2;
	}
	temp[i]='\0';
	i=i-1;
	while(i>=0)buffer[k++]=temp[i--];
	if(b==0)
	{
		buffer[k]='\0';
		return buffer;
	}
	buffer[k++]='.';
	for(i=0;i<23;i++)
	{
		int t=b*2;
		buffer[k++]=t+48;
		b=b*2-t;
	}
	if(b!=0)
		cout<<"ERROR"<<endl;
	buffer[k++]='\0';
	return buffer;
}

  

posted on 2013-07-30 20:50  dyc0113  阅读(317)  评论(0编辑  收藏  举报

导航