含小数的二进制转10进制怎么转?
一个十进制数:ABC.DEF = A*10^2 + B*10^1 + C*10^0 + D*10^-1 + E*10^-2 + F*10^-3
一个二进制数:abc.def = a*2^2 + b*2^1 + c*2^0 + d*2^-1 + e*2^-2 + f*2^-3
这是不同进制的数值表示的根本。例如:二进制数1101.01转化成十进制
1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25
所以总结起来通用公式为:
abcd.efg(2)=d*20+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3
十进制整数转换为二进制整数:采用"除2取余,逆序排列"法。
具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
十进制小数转换成二进制小数:采用"乘2取整,顺序排列"法。
具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
小数部分从小数点位置开始:1/2,1/4,1/8,1/16....
即:1010.1011=>8+2+1/2+1/8+1/16
(“^”代表幂)
1101.0111=>1*2^3+1*2^2+0*2^1+1*2^0+0*2^(-1)+1*2^(-2)+1*2^(-3)+1*2^(-4)
小数部分是如果小数点后第一位为1的话就加上0.5(即1/2),第二位加上0.25(1/4),第三位加上0.125(1/8),接着就是1/16,1/32,1/64.....。无论算出多少都是正确的。你也可以后过来算,你算了十进制数后,就拿小数部分*2,
如7/16=0.4375
0.4375*2=0.875 整数部分为0 即当前二进制数值为:0.0
0.875*2=1.75 整数部分为1 即当前二进制数值为:0.01 去掉1后继续运算。
0.75*2=1.5 整数部分为1 即当前二进制数值为:0.011 去掉1后继续运算。
0.5*2=1.0 整数部分为1 即当前二进制数值为:0.0111 去掉1后为0,运算结束。
0.4375的二进制数为:0.0111