浮点数(单精度、双精度数)的有效位

浮点数7位有效数字。
双精度数16位有效数字。

浮点数取值范围:
负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。

双精度数取值范围:
负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。

C/C++中浮点数的表示遵循IEEE 754标准。
一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M(如下)。
  Float
S--------E-------M
1位-----8位-----23位

  Double
S--------E-------M
1位-----11位----52位

浮点数的精度取决于尾数部分。尾数部分的位数越多,能够表示的有效数字越多。 

单精度数的尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。 

双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。
 

浮点数的标准二进制数值表示:

 IEEE 754

短浮点数和有符号整型一样,符号位是1,表示负数;符号位是0,表示正数。

指数位部分既可表示正指数又可表示负指数。因此,指数位部分通过实际指数值加上偏差值127的方法计算。例如:实际指数值为-15,该浮点数的指数位值是112。由于偏差值的作用,实际指数值的有效范围为-127到128。

有效位表示标准二进制数值的分数部分。标准二进制数值大于1小于10并包含小数部分。小数部分很重要,因此被包含在浮点数格式中。标准值通常都大于1,因此格式中无需包含1。

下文为将一个十进制数字转换成短浮点数值的实例。  

 实例: 22.625

               22 = (10110)2

               0.625 = (.101)2

               10110.101 = 1.0110101 x 2^4 (标准值)

符号位 = 0 (正数)

指数位 = 4 + 127  = 131 = 10000011

有效位 = 0110101[16个零]

短浮点数 = 0 10000011 0110101[16个零]  

如果将一个短浮点数值转换成十进制数值,应用如等式1-1。

数值 = (-1)^符号位x [1 + (有效位/2^23)] x 2^(指数位 –127)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值