`

以float为例了解浮点数

 
阅读更多


flaot浮点数二进制表达由三个部分组成:

sign(1bit):表示浮点数是正数还是负数,0表示正数,1表示负数

exponent(8bit):指数部分。类似科学计数法中M*10^N中的N,只不过这里是以2为底数,需要注意的是,这部分是要以2^7-1即127做偏移调整的,即指数实际值等于2^E-127

mantissa(23bits):基数部分。浮点数具体数值的实际表示

 

举个例子:以5.5为例

①5.5用二进制表示为101.1

②将其规格化(Normalize),原理就是保证小数点前只有一个bit。等到如下表达式:1.011*2^2

③填充到各部分

sign:正数所以为0

exponent:需要做偏移调整所以它的值应该是127+2= 129

mantissa:需要特别解释一下,因为规格化后整数部分总是为1,所以将1省去,则mantissa为011

 

最后得到float表示的5.5在计算机中存储的是 0 1000 0001 0110 0000 。。(后面0省略)

 
exponent都为0或都为1时,有非规格数、无穷大、无穷小、NaN等几种情况,不介绍

 

float取值范围和精度

取值范围大致取决于exponent,精度取决于mantissa,2^23等于8388608所以精度为7位能完全保证6位
 

  • 大小: 59.1 KB
  • 大小: 109.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics