float的实际存储和计算方法
0 zzzzzzzz wwwwwwwwwwwwwwwwwwwwwww
符号位 指数位 小数位


指数位8位 zzzzzzzz 转换为byte 取值范围 0~255 [-128~127]
这里是无符号,但是要127 为0。
即实际表示011111111 是0 就是2^0
10000001 表示2 就是2^2


小数位23位 wwwwwwwwwwwwwwwwwwwwwww 代表小数
100 1000 0000 0000 0000 0000 
1/(2^-1)+ 1/(2^-2)+ ...+1/(2^-23)


计算方式:
6.9=110.1110011001100 ...
左移小数点到前面只有一位,计算得到移动了2位,就是指数位
1.101110011001100 ...
取小数点右边23位
101110011001100 ...


指数位2 10000001
小数位≈0.7246 101110011001100 ...


逆运算
结果=2^指数位 + 2^指数位 * 小数位
例:
0 10000001 10111001100110011001100
+ 4 0.5+0.125+0.0625+0.03125+0.00390625+0.001953125 ...
result = 4 + 4 * 0.724609375
result = 6.8984375 ≈ 6.9

所以浮点数特性就是指数位越小,越精准。

参考:点击打开链接

阅读更多
文章标签: float 浮点运算
想对作者说点什么? 我来说一句

浮点数计算 float

floatleixing

xtji1988 xtji1988

2014-07-03 09:30:19

阅读数:209

没有更多推荐了,返回首页

不良信息举报

float的实际存储和计算方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭