- 1.2k
4
十进制小数转换成二进制的原理理解
发布于 2018-03-08 约 2 分钟
十进制小数转换成二进制的原理理解
在学习浮点数据类型的时候,涉及到了10进制的小数如何转成2进制数的问题(此文章不讨论精度问题,仅涉及转换原理--乘2取整).学习到的方法是“乘2取整“,但是一直不知道具体原理是什么,现在从数学上说明一下原理
乘2取整的操作方法
将十进制的小数部分乘2,将所得结果的整数位作为二进制的位。舍弃乘2所得结果的整数部分,如果剩余部分为0,计算结束。否则继续乘2,进行取整操作(所得整数位继续向右添加)。(如果出现循环,则终止计算,写成循环小数格式,或根据精度位数要求,保留结果位数,停止计算)
举例说明:
十进制数:0.25
1. 0.25 x 2 = 0.5 二进制数 : 0.0
2. 0.5 x 2 = 1.0 二进制数 : 0.01
结果二进制数: 0.01
原理解释
十进制数的小数部分 M 对应二进制部分应为 A1 * 2^(-1) + A2 * 2^(-2) + ... + An * 2^(-n) 其中An 为 0 或 1
现在将 M 乘 2 :M * 2 = A1 * 2^0 + A2 * 2^-1 + ... + An * 2^(1-n)
此时,A1 * 2^0 = A1 即为 M * 2的整数部分的值 求出了A1.
然后舍弃M * 2 的整数部分,即舍弃了 A1. M * 2 - A1 = A2 * 2^-1 + ... + An * 2^(1-n)
最后不断重复这一计算方式,直到乘2所得的结果小数部分为0(或者达到要求精度的位数)为止,二进制小数即为: 0.A1A2..Am (为0时m=n,否则根据精度要求决定m大小)
阅读 7.3k发布于 2018-03-08