More than code

More Than Code
The efficiency of your iteration of reading, practicing and thinking decides your understanding of the world.
  1. 首页
  2. 其他
  3. 正文

IEEE浮点表示

2021年6月8日 494点热度 0人点赞 0条评论

ieee浮点表示

ieee浮点表示用下式表示一个数
V=(-1)^S * M * 2^E
+ 符号 S表示这个数是正数(0)还是负数(1),由单独符号位s直接编码
+ 尾数 M是一个二进制小数,由n位小数字段frac编码,同时还依赖阶码字段判断是否为0
+ 阶码 E的作用是对浮点数进行加权,权重是2的E次幂,由k位的阶码字段exp编码

浮点数.jpg

在单精度浮点数格式中,s,exp和frac字段分别为1位,k=8位和n=23位,得到一个32位的表示,而双精度浮点数中,在c语言中共64位,s,exp和frac字段分别为1位,k=11位和n=52位,得到一个64位的表示。

根据exp的值可以分为三种不同情况

  1. 规格化的
    此时exp的位模式不会是全为0或全为1,此时阶码字段被解释为以偏置形式表示的有符号整数,也就是说阶码的值为 E=e-bias ,bias为 2^k-1 (单精度为127,双精度为1023),e的位表示为阶码字段 到现在为止都在抄书
    尾数的定义 M=1+f 。也叫隐含以1开头的表示
  2. 非规格化的
    exp的位全为0此时,阶码值为 E=1-bias ,尾数的值 M=f ,也就是小数字段的值,不包含隐含的1。
    非规格化数有两个用途,一是提供了表式数值0的方法,因为使用规格化数总是使 M>=1 ,导致无法表示0;二是表示那些非常接近0.0的数,他提供了一种属性,称为逐渐下溢
  3. 特殊值
    exp的位全位1时,frac全为0时表示无穷,符号位表示是正无穷还是负无穷
    当frac非0时,结果被称为“NaN”,即“not a number”。

总结

准备开始写blog,表示完全没有自己的想法,稍微学习了markdown的语法,其实相当简单,对浮点数的理解还是不够充足,还要反复琢磨,don't 害怕 learn something new

author:zuoyu

标签: c++
最后更新:2021年6月8日

sheep

think again

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 heavensheep.xyz. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS