原文地址:http://www.math.byu.edu/~schow/work/IEEEFloatingPoint.htm

Floating point system

Floating point arithmetic

  浮点型标准是什么?

  IEEE浮点标准是上世纪80年代初由IEEE采用的一个浮点计算系统。

  计算机采用IEEE浮点标准的要求:

  1.正确计算舍入;

  2.浮点数应该被计算机正确表示;

  3.异常处理应该是明确一致的。

  引用:见顶部

  浮点数表示法

  32位机的单精度数:

  32位机的单精度模式会将一个字表示为b1b2b3...b9b10b11...b32的实数形式

                                  (-1)s x 2e-127 x (1.f)2

   where s = b1,  e = (b2...b9)2, and f = b10b11...b32.

                              

符号位 偏移指数 正常数字尾部的分数
1 bit 8 bits 23 bits
s e f

   需要注意的是,尾部的分数部分由一个隐藏位和实际尾部数字共24位二进制数存储。

  32位的双精度数

  32位机的双精度模式会将两个字表示为b1b2b3...b12b13b14...b64 的实数形式

                                  (-1)s x 2e-1023 x (1.f)2

  where s = b1,  e = (b2...b12)2, and f = b13b14...b64.

符号位 偏移指数 尾部的小数
1 bit 11 bits 52 bits
s e f

  尾部的分数部分由一个隐藏位和实际尾部数字共53位二进制数存储。

  

  32位机浮点数的十进制值:

  单精度 双精度
Machine epsilon 2-23 or 1.192 x 10-7   2-52 or 2.220 x 10-16
最小正数 2-126 or 1.175 x 10-38  2-1022 or 2.225 x 10-308 
最大正数 (2- 2-23) 2127 or 3.403 x 1038  (2- 2-52) 21023 or 1.798 x 10308 
最小负数 2-150 or 7.0 x 10-46 2-1075 or 2.5 x 10-324
十进制精度 6 位标识 15 位标识

        (Machine epsilon:大于1的机器所能表示的最小浮点数;Smallest subnormal:低于最小值?无穷小?)    

        (In computer science, denormal numbers or denormalized numbers (now often called subnormal numbers) fill the underflow gap around zero in floating-point arithmetic. Any non-zero number with magnitude smaller than the smallest normal number is 'subnormal'.)

  IEEE标准舍入

  通常使用舍入到最近值的方式。基本上,给定一个实数x,它正确的舍入值是最接近x的浮点数fl(x)。

  

  IEEE浮点标准的特殊值

  单精度表示

  标志位 指数偏移 小数部分
 

1 bit

8 bits

23 bits

7/4 0 0 1 1 1 1 1 1 1  1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-34.432175 1 1 0 0 0 0 1 0 0  0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0
-959818 1 0 0 1 0 0 1 0   1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- 0 1 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
macheps 0 0 1 1 0 1 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
"smallest" 0 0 0 0 0 0 0 0 1  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
"largest" 0 1 1 1 1 1 1 1 0  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
infinity 0 1 1 1 1 1 1 1 1  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
NaN 0 1 1 1 1 1 1 1 1 Not all 0s or 1s
2-128** 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

   (macheps = machine epsilon,infinity:无穷大)

  **这些是非标准数。这些数计算机可以表示,但是相比于正常值,它们的精度要低一些。

IEEE浮点标准的更多相关文章

  1. 深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准

    整数的表示和运算我们已经讲完了,在实际应用中,整数能够解决我们大部分问题.但是某些需要精确表示的数,比如某件商品的价格,某两地之间的距离等等,我们如果用整数表示将会有很大的出入,这时候浮点数就产生了. ...

  2. 二进制小数和IEEE浮点标准

    二进制小数 首先复习进位计数制的要素: 数码:用来表示进制数的元素.比如 二进制数的数码为:0,1 十进制数的数码为:0,1,2,3,4,5,6,7,8,9 十六进制数的数码为:0,1,2,3,4,5 ...

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

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

  4. 二进制小数及 IEEE 浮点表示

    1.二进制小数 前面这篇博客 进制间的转换  我们已经讲过了各个进制数的表示.现在我们复习一下: 进位计数制的要素: ①.数码:用来表示进制数的元素.比如二进制数的数码为:0,1.十进制数的数码为:0 ...

  5. 数据库设计(2/9):域,约束和默认值(Domains, Constraints and Defaults)

    对于设计和创建数据库完全是个新手?没关系,Joe Celko, 世界上读者数量最多的SQL作者之一,会告诉你这些基础.和往常一样,即使是最专业的数据库老手,也会给他们带来惊喜.Joe是DMBS杂志是多 ...

  6. PHP: 深入pack/unpack

    https://my.oschina.net/goal/blog/195749 PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性 ...

  7. 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

    前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算. 之前我们已经提到过,有很多小数是二进制浮点数无法准确表示的,因此就难免会遇到舍入的问题 ...

  8. PHP: 深入pack/unpack 字节序

    http://my.oschina.net/goal/blog/195749?p=1 目录[-] 写在前面的话 什么是字节序 MSB和LSB 大端序 小端序 网络字节序 主机字节序 总结 pack/u ...

  9. [转载]为什么使用%lf读取double型的值,而用%f进行显示?

    博客地址:http://blog.csdn.net/shenzhou111/article/details/7826444 今天看到一篇好文章,mark一下. 出去旅游了一下,所以有些天没敲代码,于是 ...

随机推荐

  1. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  2. 问题记录:EntityFramework 一对一关系映射

    EntityFramework 一对一关系映射有很多种,比如主键作为关联,配置比较简单,示例代码: public class Teacher { public int Id { get; set; } ...

  3. zookeeper源码分析之二客户端启动

    ZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: create(path, data, flags): 创建一个ZNode, path是其 ...

  4. 谈谈JS的观察者模式(自定义事件)

    呼呼...前不久参加了一个笔试,里面有一到JS编程题,当时看着题目就蒙圈...后来研究了一下,原来就是所谓的观察者模式.就记下来...^_^ 题目 [附加题] 请实现下面的自定义事件 Event 对象 ...

  5. 利用注册表在右键添加VS15的快捷方式打开文件夹

    1.简介 最近安装VS15 Preview 5,本版本可以打开"文件夹" 是否可以向Visual Studio Code一样在文件夹或文件右键菜单添加"Open with ...

  6. 彻底搞懂Javascript的“==”

    本文转载自:@manxisuo的<通过一张简单的图,让你彻底地.永久地搞懂JS的==运算>. 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容让人犯错,从而 ...

  7. iOS开源项目周报1229

    由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Ma ...

  8. JAVA设计模式之模板模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...

  9. 舍弃Nunit拥抱Xunit

    前言 今天与同事在讨论.Net下测试框架的时候,说到NUnit等大多数测试框架的SetUp以及TearDown方法并不是显得那么完美,所以在公司内部的项目中采用了Xunit框架.那么究竟是什么样的原因 ...

  10. GO 基础(一)

    Go语言基础工程目录如下(采用LiteIDE): 备注:需要提前设置GOPATH,即工作目录,bin.pkg.src为默认的GO工程目录结构.GOPATH可以支持多个,在windows下配置在环境变量 ...