Ric*_*gan 13
在纸面上,转换十进制数小数部分的好算法是"重复乘2"算法(详见http://www.exploringbinary.com/base-conversion-in-php-using-bcmath/,在标题"dec2bin_f()"下.例如,0.8125转换为二进制,如下所示:
1. 0.8125 * 2 = 1.625
2. 0.625 * 2 = 1.25
3. 0.25 * 2 = 0.5
4. 0.5 * 2 = 1.0
Run Code Online (Sandbox Code Playgroud)
剥离整数部分并在每一步保存,形成二进制结果:0.1101.
如果您希望工具自动执行这些类型的转换,请参阅我的十进制/二进制转换器.
假设你没有考虑在PC内部,只考虑二进制与十进制在一张纸上的物理表示:
你知道.1的二进制应该是十进制的.5,所以.1的位置值得.5(1/2)
.01值得.25(1/4)(前一个的一半)
.001值得(1/8)(1/4的一半)
注意分母是如何进展的,就像小数点左边的整数 - 标准^ 2模式一样?接下来应该是1/16 ......
所以你从.625开始,是否高于.5?是的,所以设置第一位并减去.5
.1二进制,小数余数为.125
现在你有下一个位置,值得.25dec,是否小于你当前剩余的.125?不,所以你没有足够的小数"金钱"购买第二个位置,它必须是0
.10二进制,仍然.125余数.
现在去第三个位置,等等.(提示:我认为不会有太多等等)