纯小数如何转二进制

纯小数怎么转二进制
对于纯小数转化为二进制来说,必须先进行规格化。例如0.0456,我们需要把它规格化,变为1.xxxx * (2n )的形式,要求得纯小数X对应的n可用下面的公式:
n = int( 1 + log 2X )

0.0456我们可以表示为1.4592乘以以2为底的-5次方的幂,即1.4592 * ( 2-5 )。转化为这样形式后,再按照上面处理小数的方法处理,得到二进制表示

1. 01110101100011100010001

去掉第一个1,得到尾数

01110101100011100010001

阶码为:-5 + 127 = 122,二进制表示为

0 01111010 01110101100011100010001

最后转换成十六进制
11 C7 3A 3D
,这个看不懂,纯小数不是乘以二取整数么

------解决方案--------------------
他连乘了5次2而已,因为头4次整数部分都是0
------解决方案--------------------
将给定的十进制数除以2,如果商不为0就将商作为被除数接着除以2,直到不够除为止,每次的余数作为2进制数由低位到高位排列。 如 十进制数3转化为2进制数,先用3除以2,商为1够除,余1,;再用1除以2发现不够除此时截止余数为1,将两次的余数有低至高排列即为11 为3的二进制形式。。
代码如下:
int num[100];//用来存储2进制数的每一位
void Change( unsigned int x ) //进制转化函数
{
 if( x == 0 ) //注意这个情况
 {
printf( "0\n" );
return;
 }

 int k = 0;

 while( x )
 {
num[k++] = x % 2;
x /= 2;
 }

 for( int i = k-1 ; i >= 0 ; i-- )
printf( "%d" , num[i] );
 printf( "\n" );
}