Windows自带的计算器可以方便地把十进制的整数转换成二进制的整数,但是十进制的小数则无法直接转换成二进制的小数。
一个十进制小数可以表示成“X.Y”的形式,“X”是整数部分,“Y”是纯小数部分,要分别进行转换,最后合在一起。
整数部分“X”的转换成二进制可以直接利用Windows的计算器,非常简单,不说了。
对纯小数部分“Y”的转换,要提前设定转换精度,比如精确到小数点后16位。别理解错了,对于二进制的小数点后16位在精度上仅相当于十进制小数点后的5位,并非十分高!
将“0.Y”乘以2的16次方,即“0.Y×65536”,结果可能会有小数部分,将小数部分四舍五入到个位,得到一个没有小数部分的纯整数,称作“Z”。
利用Windows计算器将“Z”转换成二进制,若结果不足16位,则在最前面补0,补够16位。这就是小数部分“Y”对应的二进制了。
现在将“X”和“Y”对应的二进制数码合在一起(中间当然要有小数点),就是最终结果了!
举个实例:把十进制纯小数“0.123”转换成二进制小数。
0.123×65536=8060.928
四舍五入后得到“8061”,转换成二进制为“1111101111101”,只有13位,前面需要补3个“0”,得到“0001111101111101”。因此结果是0.123=(0.0001111101111101)2=(0.1F7D)16
乘2,取整数部分。比如说十进制的0.3转为二进制。
0.3×2=0.6……整数为0
0.6×2=1.2……整数为1
0.2×2=0.4……整数为0
0.4×2=0.8……整数为0
0.8×2=1.6……整数为1(这里小数为0.6,和第一条一样,开始循环)
所以二进制的小数为0.01001……
十进制15转化成2进制过程如下
15/2=7 余数为1
7/2=3 余数为1
3/2=1 余数为1
最后吧数字组合起来就是1111
比如128
128......0
64......0
32......0
16......0
8......0
4......0
2......0
1......1 ↑
10000000