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


浮点数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)


                
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
浮点数的存储格式 基于IEEE 754的浮点数存储格式 IEEE(Institute of Electrical and Electronics Engineers,电子电气工程师协会)在I985年制定的IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 754-1985 )二进制浮点运算规范,是浮点运算部件事实上的工业标准。 在计算机系统的发展过程中,曾经提出过多种方法表示实,但是到目前为止使用最广泛的是浮点表示法。相对于定点而言,浮点数利用指使小点的置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实浮点数表示法利用科学计法来表达实。通常,将浮点数表示为 ± d.dd…d ×βe,其中d.dd… d 称为有效字(significand),它具有 p 个字(称p有效字精度),β为基(Base),e为指(Exponent),±表示实的正负[1,2]。更精确地,± d0.d1d2…dp-1 × βe, 表示以下 ±(d0+d1β-1+… +dp-1β-(p-1))βe,(0≤di<β= 对实的浮点表示仅作如上的规定是不够的,因为同一实的浮点表示还不是唯一的。例如,1.0×102 ,0.1 ×103 ,和0.01 ×104 都可以表示100.0。为了达到表示单一性的目的,有必要对其作进一步的规范。规定有效字的最高(即前导有效)必须非零,即0<d0<β。符合该标准的称为规格化(Normalized Numbers),否则称为非规格化(Denormalized Numbers)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值