对于32位浮点数

sign: 符号,1位

exponent: 指数,8位,偏码

fraction: 分数,23位,原码

特殊值

 

指数域的编码值 = 指数的实际值 + 127

这样按照字典序的顺序就可以比较两个指数域的编码值的大小,在比较两个浮点数大小时比使用原码方便

规约形式

“规约”是指用唯一确定的浮点形式去表示一个值。

即要求fraction部分最高有效位为1,且指数域的编码值不为0

由于这种表示下的尾数有一位隐含的二进制有效数字(因为最高位总是1,所以按照规约数解析时,自动在最前面添加1,这个1是不存储在bit中的,非规约数不会自动添加1),为了与二进制科学计数法的尾数(mantissa)相区别,IEEE754称之为有效数(significant)。

IEEE754要求

exponent编码值为全0,fraction部分存储的编码值不为全0时,按照非规约数解析,此时实际指数看作-126而不是-127

exponent为1~2e-1,-2e-2~-1,按照规约数解析

非规约形式

exponent为0,fraction不为0,之所以同时存在非规约形式,是因为绝对值最小的规约浮点数为1.0*2-126,绝对值次小的规约浮点数为(1+2-23)*2-126,两者距离2-149,而绝对值最小的规约浮点数于0的距离是2-126,可以看出,两个绝对值很小的规约浮点数之间的距离比它们到0的距离近很多,这样导致两个不等的很小的规约浮点数的差变成0,这种方式称作突然式下溢出(abrupt underflow)。而渐进式下溢出(gradual underflow)因为引入非规约浮点数,最小的非规约浮点数的绝对值为2-23*2-126,次小的为2-22*2-126,两者距离2-149,同时,最小的非规约浮点数与0之间的距离也是2-149

浮点数举例

参考文献:https://zh.wikipedia.org/wiki/IEEE_754

IEEE754二进制浮点数算术标准的更多相关文章

  1. IEEE 754二进制浮点数算术标准

    可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...

  2. IEEE二进制浮点数算术标准(IEEE 754)

    整理自IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0) ...

  3. IEEE二进制浮点数算术标准学习

    看到有网上有个项目是要求将浮点数用二进制表示出来,需要用IEEE754标准,查了查维基和深入理解计算机系统,重新学习了一遍浮点数在计算机中的表示和内存中的存储, 先简单的做个笔记,后面需要更深入的理解 ...

  4. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  5. 震惊!计算机连0.3+0.6都算不对?浅谈IEEE754浮点数算数标准

    >>> 0.3+0.6 0.8999999999999999 >>> 1-0.9 0.09999999999999998 >>> 0.1+0.1+ ...

  6. IEEE 二进制浮点数的表示

    朋友在谈一个物流相关的项目,是以前项目的一个延续,涉及到后台的扩展,手机端的App,外加两个App的对接的蓝牙打印机.这个项目前后说了一个多月了吧,最近才草拟了协议.项目本来不复杂,但是客户却如此的拖 ...

  7. [学习笔记]Javascript采用二进制浮点数和四舍五入的错误

    1.样例 var a = .3 - .2 //0.09999999999999998 var b = .2 - .1 //0.1 a == b //false 出现这样的原因在于 1.Javascri ...

  8. IEEE 754浮点数表示标准

    二进制数的科学计数法 C++中使用的浮点数包括采用的是IEEE标准下的浮点数表示方法.我们知道在数学中可以将任何十进制的数写成以10为底的科学计数法的形式,如下 其中显而易见,因为如果a比10大或者比 ...

  9. Knowledge Point 20180305 十进制转换成二进制浮点数

    如何将十进制的浮点数 转换二进制的浮点数,分为两部分: 1. 先将整数部分转换为二进制, 2. 将小数部分转换为二进制, 然后将整数部分与小数部分相加. 以 20.5 转换为例,20转换后变为1010 ...

随机推荐

  1. Java集合--WeakHashMap

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311092 第1部分 WeakHashMap介绍 W ...

  2. JSP基础语法总结

    任何语言都有自己的语法,Java中有.JSP虽然是在Java上的一种应用,但是依然有其自己扩充的语法,而且在Jsp中,所有Java语句都可以使用. 一.Jsp的模板元素 Jsp页面中的HTML内容称为 ...

  3. express框架封装前戏

    一.开启一文件,这里暂且命名为aexpressclass.js 声明一个app类,用来模仿http模块中的回调函数 //var route = require('http-route'); var u ...

  4. C#中一些常用的方法使用

    一.string.Empty string.Empty就相当于 "" ,一般用于字符串的初始化 , 比如: string a; Console.WriteLine(a);//这里会 ...

  5. angularjs 动态计算平均值

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. LR性能测试课程及视频教程

    LR性能测试课程及视频教程课程如下: 1.性能测试核心技术-2.性能测试脚本开发-3.LR场景设计-4.LR指标分析. 1.性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各 ...

  7. 微服务springboot视频最新SpringBoot2.0.3版本技术视频教程【免费学习】

    超火爆的springboot微服务技术怎么学,看这里,springboot超详细的教程↓↓↓↓↓↓https://ke.qq.com/course/179440?tuin=9b386640 01.sp ...

  8. 2Dot grammar

    http://www.cnblogs.com/mjios/archive/2013/04/08/3006577.html . #import <Foundation/Foundation.h&g ...

  9. 分享一个自己做的SpringMVC的PPT,由于比较忙只写了一些重要的部分

  10. postgresql interval 字段拼接

    无拼接时: SELECT scan_time + '5 day' FROM tbl_temp_record SELECT scan_time + '-5 day' FROM tbl_temp_reco ...