ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IEEE 浮点表示

2022-01-04 09:31:13  阅读:163  来源: 互联网

标签:表示 全为 单精度 浮点 exp IEEE 精度


计算机中浮点数的表示方法采用该标准——IEEE浮点表示

形如 x × 2y 这样的数,可以通过给定 x 和 y 的值来表示。
IEEE 浮点标准用 V = (-1)s × M × 2E 的形式来表示一个数:

  • 符号(sign) s 决定这个数是正数还是负数(s=0正数,s=1负数)。
  • 尾数(significand)M是一个二进制小数。
  • 阶码(exponent)E的作用是对浮点数加权,权重是2的E次幂。

下图分别表示(C语言中)单精度浮点float 和双精度浮点 double的表示格式。
C语言浮点数表示

  • float格式中,s、exp、和frac字段分别为1位、k=8位和n=23位,得到一个32位的表示。
  • double格式中,s、exp、和frac字段分别为1位、k=11位和n=52位,得到一个64的表示。

给定了位表示,根据exp的值,被编码的值可以分成三种不同的情况。
C语言浮点数表示

情况1:常规值

也就是最普遍的情况。exp 的位模式不全是0,也不全是1(单精度数值为255,双精度值为2047)。阶码的值为 E = e - Bias
e 是无符号数,位表示为: ek-1 … e1e0 因此它的值在 1 ~ 254 之间(单精度),1~2046之间(双精度);
Bias 是偏置值:等于 2k-1 - 1 (单精度是127,双精度是1023)
因此,E 的值就可以得到一个范围: -126 ~ 127(单精度),-1022 ~ 1023(双精度)
小数字段 frac 被解释为描述小数值 f0 ≤ f ≤ 1
二进制表示为 0.fn-1 … f1f0
由此尾数被定义为 M = 1 + f (也叫做隐含的以1开头的表示)

情况2:非常规的值

当阶码全都为0时,所表示的数是非规格化的形式。
阶码值是 E = 1 - Bias
尾数值是 M = f,也就是小数字段的值,不包含隐含的1。

情况3:特殊值

当阶码位全为1时,表示特殊值。

  • 无穷大:阶码位全为1,小数位全为0
  • NaN:表示不是一个数(Not a Number),即阶码位全为1,小数位不全为0。

标签:表示,全为,单精度,浮点,exp,IEEE,精度
来源: https://blog.csdn.net/csdn_zhongwu/article/details/122291493

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有