0.6怎么化成二进制,这是什么意思

如题所述

十进制数0.6采用"乘2取整,顺序排列"法化成二进制,而有些数是算不完的,就需要保持需要的精度了。0.6化成二进制,精度为小数后四位,结果就是0.1001。

具体计算过程如下:0.6x2=1.2 取整1,0.2x2=0.4 取整0,0.4x2=0.8 取整0,0.8x2=1.6 取整1,0.6x2=1.2 取整1..........。保留四位精度,得二进制转换结果0.1001。

扩展资料

十进制小数转换成二进制小数计算过程:

用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

然后将得到的整数进行正向排序,即可得到转换后的二进制小数。

参考资料来源:百度百科-十进制转二进制

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-31

1.首先,小数化成二进制是用【乘基数取整法或者叫乘二取整法】。


2.例如: 第一步 0.6 * 2=1.2,取整就是1,所以最高位就是1【或者说从左往右数的第一位是1】;

第二步就是把小数后的数提取出来就是 0.2,然后用 0.2 * 2=0.4,这时小数部分第二位就是0;

第三步提取小数部分是0.4,就有 0.4 * 2=0.8,小数部分第三位就是0;

第四步 0.8 * 2=1.6 ,小数部分第四位就是1;

第五步 0.6 *2 =1.2【又是0.6已经重复了,进入死循环】,一直如此重复下去,终止条件是乘出来的结果为0或者达到你需要的精度为止。【目前只是计算了五步,显然0.6的二进制为:0.1001100110011001......】


3.这时你会发现上面的步骤会一直循环的计算下去【不考虑达到精度的问题】,实际上这永远算不完!这就是著名的浮点数精度问题。因为计算机的浮点数是用有限的位数来表达的,所以浮点数永远无法在计算机精确表示,这也就是计算机C/C++语言判断浮点数是否相等,而不直接用==的原因。


4.C语言代码如下:

#include<stdio.h>
#include<stdlib.h>
#define NUM 2
#define ZERO 0.000001
//整数部分的转换 
void integer(int n)
{
if (n>0)
{
integer(n / NUM);
printf("%d", n%NUM);
}
}
//小数部分的转换 
void decimal(double m)
{
if (m>ZERO)
{
m = m*NUM;
printf("%d", (long)m);
decimal(m - (long)m);
}
}
int main(void)
{
double f;
long n;
printf("请输入一个10进制的小数:");
scanf("%lf", &f);
if (f<0)
{
printf("-");
f = -f;
}
n = (long)f;//整数部分 
printf("转换成%d进制的小数为:", NUM);
integer(n);
printf(".");
decimal(f - n);//小数部分的转换 
printf("\n");
return 0;
}

结果如图所示:

第2个回答  2012-08-06
0.10011 10011 10011………………………………循环的
进位了追问

计算过程

追答

0.6*2=1.2留1,留整数1
在用0.2*2=0.4,整数为0
在继续0.4*2...............
就这样和上图一样啊 只到为刚好为1为止

本回答被提问者采纳
第3个回答  2012-08-06
小数点后面的都是乘法进位,整数部分都是除法追问

结果到底多少,0.1001还是0.1010

相似回答