以前自己学习进制的转换这一部分的时候总是不理解十进制小数转二进制时候用到的乘基取整法的原理,在网上也没有找到自己满意的解答。最近再次学习时突然有了新的理解,以下是个人对十进制小数转二进制小数原理的一些理解,希望能帮助到需要的人。
?
注:任何整数部分为0的十进制小数乘二后,整数部分只可能是0或者1,对应二进制值的0和1,乘二转换方法等同于二进制数每次左移一位后取其整数部分
十进制小数和r进制小数的关系:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如: 0.6875?=?(0.1011)?=
第一步0.6875*2=1.3750? ?作用等同于??(0.1011)*2 即(0.1011)左移一位变成?(1.011)
取出整数部分的 1 ,分别变为0.3750 和??(0.011),第一次取出的数 1对应公式里的??
第二步0.3750*2=0.7500? ?作用等同于??(0.011)*2 即?(0.011)左移一位变成?(0.11)
取出整数部分的 0 ,分别变为0.7500 和???(0.11), 第二次取出的数 0对应公式里的??
第三步0.7500*2=1.5000? ?作用等同于??(0.11)*2? ?即?(0.11)左移一位变成?(1.1)
取出整数部分的 1 ,分别变为0.5000 和???(0.1), 第三次取出的数 1对应公式里的??
第四步0.5000*2=1.0000? ?作用等同于??(0.1)*2? ?即?(0.1)左移一位变成?(1.0)
取出整数部分的 1 ,分别变为0.0000 和???(0.0), 第三次取出的数 1对应公式里的??
至此,小数部分的值为0,乘二不再会产生进位,即?,,,全部取出算法结束。
?
?
19063962