浮点数

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

浮点数计数

首先浮点数计数方式为科学计数法,所以浮点数的计数可大体表示为-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代码无法准确表示某些带小数位的十进制数据,乘二取整法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在编程中我们总要进行一些数学运算以及数字处理,尤其是浮点数的运算和处理,这篇文章主要介绍C语言下的数学库。而其他语...
    欧阳大哥2013阅读 5,534评论 0 12
  • 在选择计算机的数据表示方式时,通常需要考虑4点因素: 要表示的数据类型(整数,小数,实数和复数) 数值范围 精确度...
    安公子_阅读 21,332评论 0 8
  • 目录 一,浮点数精度丢失? 二,整数的二进制表示 三,浮点数的二进制表示 四,iEEE 754浮点数的手动转换 五...
    杨小黑阅读 10,551评论 3 25
  • 本文首发于个人博客 浮点数表达 IEEE754标准是用于规范浮点数运算的IEEE标准,用于解决浮点数标准混乱的问题...
    月见樽阅读 2,872评论 0 0
  • 自打记事起,老师就要我们牢记,五月的第二个星期日是母亲节。小时候的我不以为然,就是那个天天唠叨我,天天嫌弃我...
    霍格沃茨惠子阅读 493评论 0 5

友情链接更多精彩内容