前言
理解浮点数的第一步是考虑
含有小数值的二进制数字
十进制小数
首先看一下十进制的小数的表示,举例
十进制数:12.34
12.34 === 1 * 101 + 2 * 100 + 3 * 10-1 + 4 * 10-2 === 12
二进制小数
类比十进制小数表示形式
二进制数:101.11
101.11 === 1 * 22 + 0 * 21 + 1 * 20 + 1 * 2-1 + 1 * 2-2 === 4 + 0 + 1 + +
=== 5
十进制小数转二进制小数
- 举例:12.12510
将小数点前面的十进制数转二进制,一直除2得到1100
小数点后面的数采用乘2取整,顺序排列
法
具体得做法是:
用2乘十进制小数,可以得到积,将积的整数部分
取出,再用2乘余下的小数部分
,又得到一个积
,再将积的整数部分取
出,如此进行,直到积为1
,或者达到所要求的精度
为止
0.125
- 2
-----
0.250 ----> 取整数得到 0 - 2
-----
0.500 ----> 取整数得到 0 - 2
-----
1.000 ----> 取整数得到 1
最终得到1100.0012
- 举例12.62510
0.625 * 2 ---> 1.250 取出整数部分得到 1
0.250 * 2 ---> 0.500 取出整数部分得到 0
0.500 * 2 ---> 1.000 取出整数部分得到 1
最终二进制小数为:1100.1012
- 举例12.710
0.7 * 2 ---> 1.4 取出整数部分 1 剩余0.4
0.4 * 2 ---> 0.8 取出整数部分 0 剩余0.8
0.8 * 2 ---> 1.6 取出整数部分 1 剩余0.6
0.6 * 2 ---> 1.2 取出整数部分 1 剩余0.2
0.2 * 2 ---> 0.4 取出整数部分 0 剩余0.4
0.4 * 2 ---> 0.8 取出整数部分 0 剩余0.8
-------> 循环往复,直到精度够为止...
最终二进制小数为:1100.1011002
总结
二进制小数点向左移动
一位相当于这个数被2除
,向右移动一位
相当于将数乘2
网友评论