赞
踩
32位浮点数的第一位为S(符号位),代表正负符号。
后面八位代表指数
最后使用23位来代表有效数
那么将浮点数转十进制数计算时可以采用以下公式来计算:
s为0代表正数,s为1代表负数。
e由浮点数转为十进制数时则需要减去127,以便省去指数的正负。也就是说可以表示2^(-127)~2^(128)。e=0和e=255用来表示特殊值。
取127的原因:
1)偏移值为127时,绝对值范围大致是:1.2*10^(-38)~3.4*10^(+38);
2)如果偏移值取为128时, 绝对值范围大致是:5.9*10^(-39)~1.7*10^(+38);
可见偏移值取127时,上下范围基本对称,相对合理点。
有效数区域从左到右依次乘以2^(-1)、2^(-2)……把它们相加就是公式中的f
f在公式中需要加上1,是因为浮点数默认减去了这一部分
IEEE754标准做了这样的规定:当尾数(小数)不为0时,尾数域的最高有效位为1(因为是二进制嘛),这称为浮点数的规格化。规格化后的二进制小数,有了统一的规格,可以发现这样规格化之后,我们只需要存储一个尾数(即小数部分,整数部分恒为1)和指数部分。
浮点数转二进制时,把有效数开头加上1和小数点,公式中2的几次方(e减去127等于几)就把小数点移动几位就行啦,指数是正的话向右移动,指数是负的话向左移动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。