浮点数

作者: 58614da8331b | 来源:发表于2019-07-14 15:14 被阅读0次

浮点数是《码出高效》第一章第二节一个内容,系统介绍了浮点数的计数方法,浮点数运算等内容以及浮点数误差的原因以及应对。

浮点数计数

首先浮点数计数方式为科学计数法,所以浮点数的计数可大体表示为-1.4561×2^n,对应科学计数法浮点数也由三部分组成:符号位,阶码位以及尾数位组成。符号位很好理解为±,阶码位即上图中2的指数n,尾数即为1.4561.在实际应用过程中基于方便运算考虑运用了一些特殊的编码方式:

阶码位:

阶码位存储的是真值的移码,即真值平移一个偏移量得到的:

                                                                                E=e+(2^{n-1}-1 )

                                                E为阶码,e为真值,n为二进制位数单精度为8,可换算为127

尾数位:

尾数位是位于最后的23位有效数字,尾数位值a范围为1<a <2,所以最高位整数位必为1已省略。所以其实是24位有效数字。最小为1.0,最大为一个无限接近2的数值。

浮点数运算

浮点数运算主要分为零值检测,对阶操作,尾数求和,结果规格化,结果舍入等步骤

零值检测

主要是因为浮点数运算较为复杂,如果存在零值就不再运算

对阶操作

对阶操作主要是为了将阶码位对齐,并且是选择阶码小的进行阶码增加同时尾数右移以减少误差。

尾数求和

对阶之后,阶码相同即指数相同此时可以对尾数直接按位相加完成求和。

结果规格化

即将尾数向左向右移动达到1<a<2形式并对阶码做对应的调整。

结果舍入

由于在对阶过程中,尾数右移导致右侧被移除位的丢失所以移除时先将移除部分保留然后根据移除部分舍入。

e.g.

1.5×10^{38} + 6.5×10^{37}\implies 1.5×10^{38} +0.65×10^{38}=2.15×10^{38} \implies 1.057×10^{39} 6.5×10^{37}\implies 0.65×10^{38}

运算误差:其根本原因是计算机所使用二进制01代码无法准确表示某些带小数位的十进制数据,乘二取整法

相关文章

  • PHP浮点数精度问题

    PHP常见的浮点数“bug” 浮点数的表示形式 浮点数的表示(IEEE 754): 浮点数, 以64位的长度(双精...

  • Python 入门演示

    简单的数学运算 整数相加,得到整数: 浮点数相加,得到浮点数: 整数和浮点数相加,得到浮点数: 变量赋值 Pyth...

  • 6-0. 混合类型数据格式化输入

    本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。 输入格...

  • 3_浮点数的秘密

    关键词:内存中的浮点数、浮点数存储示例、十进制浮点数的内存表示、 float类型的不精确示例 1. 内存中的浮点数...

  • python中的数据类型和变量

    浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1....

  • Python基础知识点拾遗

    浮点数 系统浮点数信息 1.完整信息 显示结果为: 2.浮点数能表示的最大值 3.浮点数能表示的最近接0的值 4....

  • 1.2 浮点型运算

    在计算机中,浮点数虽然表示的范围大,但是,浮点数有个非常重要的特点,就是浮点数常常无法精确表示。浮点数在内存的表示...

  • 浮点数原理与精度损失问题

    写在前面 碰巧最近定义接口的时候碰到了浮点数精度的问题,稍微整理了浮点数的一些知识点: 浮点数的底层表示 浮点数的...

  • JavaScript 中的数字 Number 易于忽略点

    JavaScript 中的数字 Number 易于忽略点 一、浮点数 1. 浮点数的存储 保存浮点数值需要的内存空...

  • 高级综合工具StratusHLS学习笔记(4)

    HLS中使用浮点数 学习目标: 使用浮点数 换用自己的库进行高级综合 HLS中的浮点数 stratus HLS提供...

网友评论

      本文标题:浮点数

      本文链接:https://www.haomeiwen.com/subject/aspbkctx.html