




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 标题标题 解读解读 IEEEIEEE 标准标准 754754 浮点数表示 浮点数表示 一 一 背景背景 在 IEEE 标准 754 之前 业界并没有一个统一的浮点数标准 相反 很多计 算机制造商都设计自己的浮点数规则 以及运算细节 那时 实现的速度和简 易性比数字的精确性更受重视 直到 1985 年 Intel 打算为其的 8086 微处理器引进一种浮点数协处理器的 时候 聪明地意识到 作为设计芯片者的电子工程师和固体物理学家们 也许 并不能通过数值分析来选择最合理的浮点数二进制格式 于是 Intel 在请加州 大学伯克利分校的 William Kahan 教授 最优秀的数值分析家之一来为 8087 FPU 设计浮点数格式 而这个家伙又找来两个专家来协助他 于是就有了 KCS 组合 Kahn Coonan and Stone 他们共同完成了 Intel 的浮点数格式设 计 而且完成地如此出色 以致于 IEEE 组织决定采用一个非常接近 KCS 的方案 作为 IEEE 的标准浮点格式 目前 几乎所有计算机都支持该标准 大大改善了 科学应用程序的可移植性 二 二 表示形式表示形式 从表面上看 浮点数也是一串 0 和 1 构成的位序列 bit sequence 并不 是三头六臂的怪物 更不会咬人 然而 IEEE 标准从逻辑上用三元组 S E M 表 示一个数 N 如下图所示 N 的实际值 n 由下列式子表示 精品文档 2欢迎下载 其中 n s e m 分别为 N S E M 对应的实际数值 而 N S E M 仅仅是一串二进 制位 S sign 表示 N 的符号位 对应值 s 满足 n 0 时 s 0 n 0 时 s 1 E exponent 表示 N 的指数位 位于 S 和 M 之间的若干位 对应值 e 值 也可正可负 M mantissa 表示 N 的尾数位 恰好 它位于 N 末尾 M 也叫有效数字 位 sinificand 系数位 coefficient 甚至被称作 小数 三 浮点数格式三 浮点数格式 IEEE 标准 754 规定了三种浮点数格式 单精度 双精度 扩展精度 前两 者正好对应 C 语言里头的 float double 或者 FORTRAN 里头的 real double 精 度类型 限于篇幅 本文仅介绍单精度 双精度浮点格式 单精度 N 共 32 位 其中 S 占 1 位 E 占 8 位 M 占 23 位 双精度 N 共 64 位 其中 S 占 1 位 E 占 11 位 M 占 52 位 值得注意的是 M 虽然是 23 位或者 52 位 但它们只是表示小数点之后的 二进制位数 也就是说 假定 M 为 010110011 在二进制数值上其实是 010110011 而事实上 标准规定小数点左边还有一个隐含位 这个隐 含位通常 哦不 应该说绝大多数情况下是 1 那什么情况下是 0 呢 答案是 精品文档 3欢迎下载 N 对应的 n 非常小的时候 比如小于 2 126 32 位单精度浮点数 不要困惑 怎么计算出来的 看到后面你就会明白 总之 隐含位算是赚来了一位精度 于 是 M 对应的 m 最后结果可能是 m 1 010110011 或者 m 0 010110011 三 三 计算计算 e e m m 首先将提到令初学者头疼的 规格化 normalized 非规格化 denormalized 噢 其实并没有这么难的 跟我来 掌握它以后你会发现 一切都很优雅 更美妙的是 规格化 非规格化本身的概念几乎不怎么重要 请 牢记这句话 规格化与否全看指数 E 下面分三种情况讨论 E 并分别计算 e 和 m 1 规格化 当 E 的二进制位不全为 0 也不全为 1 时 N 为规格化形式 此 时 e 被解释为表示偏置 biased 形式的整数 e 值计算公式如下图所示 上图中 E 表示 E 的二进制序列表示的整数值 例如 E 为 10000100 则 E 132 e 132 127 5 k 则表示 E 的位数 对单精度来说 k 8 则 bias 127 对双精度来说 k 11 则 bias 1023 此时 m 的计算公式如下图所示 标准规定此时小数点左侧的隐含位为 1 那么 m 1 M 如 M 101 则 1 M 1 101 1 625 即 m 1 625 2 非规格化 当 E 的二进制位全部为 0 时 N 为非规格化形式 此时 e m 的计算都非常简单 精品文档 4欢迎下载 注意 此时小数点左侧的隐含位为 0 为什么 e 会等于 1 bias 而不是 bias 这主要是为规格化数值 非规格化数值之间的平滑过渡设计的 后文 我们还会继续讨论 有了非规格化形式 我们就可以表示 0 了 把符号位 S 值 1 其余所有位均 置 0 后 我们得到了 0 0 同理 把所有位均置 0 则得到 0 0 非规格化数 还有其他用途 比如表示非常接近 0 的小数 而且这些小数均匀地接近 0 称为 逐渐下溢 gradually underflow 属性 3 特殊数值 当 E 的二进制位全为 1 时为特殊数值 此时 若 M 的二进 制位全为 0 则 n 表示无穷大 若 S 为 1 则为负无穷大 若 S 为 0 则为正无穷 大 若 M 的二进制位不全为 0 时 表示 NaN Not a Number 表示这不是一个 合法实数或无穷 或者该数未经初始化 四 四 范例范例 仔细研读第四点后 再回忆一下文章开头计算 n 的公式 你应该写出一个 浮点编码的实际值 n 了吧 还不能吗 不急 我先给你示范一下 我们假定 N 是一个 8 位浮点数 其中 S 占 1 位 E 占 4 位 M 占 3 位 下面这张表罗列了 N 可能的正数形式 也包含了 e m 等值 请你对照着这张表 重温一下第四点 你会慢慢明白的 说实在的 这张表花了我不少功夫呢 幸好 TeX 画表格还算省 事 精品文档 5欢迎下载 这张表里头有很多有趣的地方 我提醒一下 看 N 列 从上到下 二进制位表示是均匀递增的 且增量都是一个最 小二进制位 这不是偶然 正是巧妙设计的结果 观察最大的非规格数 发现 恰好就是 M 全为 1 E 全为 0 的情况 于是我们求出最大的非规格数为 精品文档 6欢迎下载 上面的公式中 h 为 M 的位数 如范例中为 3 注意 公式等号右边的第一 项同时又是最小规格数的值 如范例中为 8 512 第二项则正是最小非规格 数的值 如范例中为 1 512 即该浮点数能表示的最小正数 看 m 列 规格化数都是 1 x 的形式 这个 1 正是隐含位 1 而 非规格化数隐含位为 0 所以没有 1 看 n 列 非规格化数从上到下的增量都是 1 512 且过渡到规格 化数时 增量是平滑的 依旧是 1 512 这正是非规格化数中 e 等于 1 bias 而不是 bias 的缘故 也是巧妙设计的结果 再继续往下看 发现增量值逐 渐增大 可见 浮点数的取值范围不是均匀的 五 五 实战实战 我们用一小段汇编来测试一下 浮点数在内存中是如何表示的 测试环境 GentooLinux2006 0 GNU assembler version 2 16 1 GNU gdb 6 4 AMD XP1600 如下所示 代码 coding assemble gdb gdb list 1 section data 2 f1 3 float 5 4 f2 5 float 0 1 6 section text 7 global start 8 start 9 nop 10 gdb x f 由 n 的计算公式可以求得 n 1 0 1 25 2 2 5 结果被验证了 同样 你也可以验证一下十进制浮点数 0 1 的二进制形式是否正确 你会 发现 0 1 不能表示为有限个二进制位 因此在内存中的表示是舍入 rounding 以 后的结果 即 0 x3dcccccd 十进制为 0 100000001 误差 0 000000001 由此 产生了 六 六 未完成未完成 关于浮点数 还有很多东西 比如舍入误差 除零异常等等 值得我们深 入探讨 但已经无法在此继续 这篇文章的目的仅在初步解释 IEEE 标准 754 对 浮点数的规定以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《概率论与数理统计》课程简介与教学大纲
- 全国一等奖高中语文统编版必修上册《永遇乐京口北固亭怀古》 公开课课件
- 醉花阴记李清照课件
- 企业文化培训课件
- 老年人康复说话训练课件
- 酿酒坊安全知识培训课件
- 铁和铁的氧化物(含解析)-新高一化学暑假讲义(新人教版)
- 税收基础综合知识考试题库(A卷)
- 老年乐理知识培训心得
- CN120197249A 基于有限元模型的机器人结构设计优化仿真方法
- T/HQPA 5-2019防倾覆弹性滑板支座
- 茶馆承包协议书
- 93阅兵仪式观后感400字(9篇)
- 产后出血护理授课课件
- 行动研究的历史演变、思想内涵及实践意义
- 自行缴纳社保协议书模板
- 输液港的护理及进展
- 铁路工程抗震设计规范
- 前列腺癌护理业务查房
- 总包配合管理费协议1011
- 科研助理笔试题库及答案
评论
0/150
提交评论