十进制与二进制等互转原理
百度百科:https://baike.baidu.com/item/%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6/393189?fr=aladdin
重要声明,整数和小数点要分开处理!!!
二进制转十进制
整数位从右到左,根据数字所在的“位权 ”来计算,0,1,2,3。。。
小数位从左到右,根据数字所在的“位权 ”来计算,-1,-2.。。。。
总结起来通用公式为:abcd.efg(2进制) = d*2^0+c*2^1+b*2^2+a*2^3 + e*2^-1+f*2^-2+g*2^-3
十进制转二进制
十进制整数转换为二进制整数采用"除2取余,逆序排列"法,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
推论过程:
A(10进制)=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4)
假设该数未转化为二进制,除以基数2得
A/2(10进制)=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
注意:a除不开二,余下了!其他的绝对能除开,因为他们都包含2,而a乘的是1,他本身绝对不包含因数2,只能余下,
商得:
b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以基数2余下了b,以此类推。当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法,具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。。。把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位
推论过程:
假设一十进制小数B化为了二进制小数0.ab的形式,同样按权展开,得
B=a(2^-1)+b(2^-2)
因为小数部分的位权是负次幂,所以我们只能乘2,得
2B=a+b(2^-1)
注意a变成了整数部分,我们取整数正好是取到了a,剩下的小数部分也如此,值得一提的是,小数部分的按权展开的数位顺数正好和整数部分相反,所以不必反向取余数了