32位浮点数转十进制与二进制

 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等于几)就把小数点移动几位就行啦,指数是正的话向右移动,指数是负的话向左移动。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值