小弟我在学编程,有一问题想请教大家

来源:百度知道 编辑:UC知道 时间:2024/05/23 02:19:03
谁能把十进制0.81转换成二进制,请大家帮帮忙,谢谢.请把具体过程写出来谢谢
大哥,我说什么好呢?我书上答案是0.11001,哎~~~~

方法是对的啊
只是还没有算完而已,对于小数部分用辗转相乘法,整数就辗转相除。
0.81X2=1.62
0.62x2=1.24
0.24x2=0.48
0.48x2=0.96
0.96x2=1.92
0.92x2=1.84
0.84x2=1.68
......
=0.1100111...
后面你可能想写多少就写多少
因为这样的算法结束标志是得到的其中的一个数不为小数。
如0.75变二进制就是
0.75*2=1.5
0.5*2=1
这样就结束了,
所以0.75变过来就是0.11

晕,一般小数点后面的位数取四位就可以了,这样转换成16进制能统一,多数小数转成二进制都是无重的,没什么意义。
0.81X2=1.62
0.62x2=1.24
0.24x2=0.48
0.48x2=0.96

=0.1100B

0.110011110101110000101000111101011100001010001111010

算法是 小数部分 *2 取整
用c代码如下 小数部分:
#include <stdio.h>

void main()
{
double x;
scanf("%lf",&x);
printf("0.");
do
{
x = x*2;
if(x>1)
{
printf("1");
x = x-1;
}
else
{
printf("0");
}
}while(x != 1);
printf("\n");
}

输入 0.81 结果如上