cfnr.net
当前位置:首页 >> 十进制小数转换二进制的问题 >>

十进制小数转换二进制的问题

十进制小数化二进制方法: 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。 如此不断重复,直到小数部分为0或达到精度要求为止。第一次所得到为最...

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度...

将小数部分乘以2,取结果的整数部分为二进制的一位。 然后继续取结果的小数部分乘2重复,一直到小数部分全部为0结束 (有可能遇到不停循环乘不尽的情况出现) 举例: 0.8125换成二进制方法如下: 0.8125x2 = 1.625...1 0.625x2 = 1.25....1 0.25...

这个取决于你需要的精度,如果精度达到了,后面的全部可以舍去。

并不是所有的十进制小数都能精确转换为二进制小数,但是任何二进制小数都可以精确转换为十进制小数,0.15无法精确的转换为二进制,0.001001100110011循环不尽

精度0.1%即1‰(千分之一),小数点之后10位二进制可以表示2E-10=1/1024(2的-10次方),精度略高于1‰,所以要求二进制精度达到0.1%,小数点后二进制位数要达到10位。

看一下程序: #include #include #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(...

小数点后一位是1/2的一次方,第二位是1/2的平方,就这样依次算。0.1010=1*(1/2)+0*(1/2)²+1*(1/2)³+0*(1/2)四次方

二进制小数的位权都是2的负整数次幂,即阶数为负数。 例如二进制小数0.101101b,转换成十进制小数: 0.101101b=1*2^(-1)+0*2^(-2)+1*2^(-3)+1*2^(-4)+0*2^(-5)+1*2^(-6)=0.703125d。

网站首页 | 网站地图
All rights reserved Powered by www.cfnr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com