IEEE浮点标准

  原文地址: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:无穷大)

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

时间: 2024-12-08 11:22:35

IEEE浮点标准的相关文章

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

整数的表示和运算我们已经讲完了,在实际应用中,整数能够解决我们大部分问题.但是某些需要精确表示的数,比如某件商品的价格,某两地之间的距离等等,我们如果用整数表示将会有很大的出入,这时候浮点数就产生了. 在 20世纪80年代以前,每个计算机厂商都设计了自己表示浮点数的规则,以及对浮点数执行运算的细节,这对于应用程序在不同机器上的移植造成了巨大的困难.而在这之后,也就是 1985年左右,IEEE 标准产生了,这是一个仔细制定的表示浮点数及其运算的标准,现在的计算机浮点数也都是采用这个标准. 浮点数不

ieee浮点

IEEE浮点标准用符号位.有效数.指数位来表示一个数 符号位:决定是负数(s=1)还是正数(s=0) 有效数:无符号二进制小数(exp) 指数位:2的幂(frac可能为负数),加权 在单精度浮点浮点格式(C语言中的float)中,s.exp.frac域分别为1位.8位.23位,产生一个32位的表示.在双精度浮点格式(C语言中的double)中,s.exp.frac域分别为1位.11位.52位,产生一个64位的表示. 规格化值:exp域不是全0全1, 小数域frac描述小数值f(0<=f<1),

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

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer11.html 2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之前一样,觉得了解浮点数的内容没什么用,只要会简单的使用就行了.当然,这其中也可能有部分猿友是觉得这部分内容太难,而对它失去了学习的兴趣. 就像之前的LZ一样,曾经对IEEE标准望而

20145225 《信息安全系统设计基础》期中总结

期中总结 一.常用命令总结 man -k: 常用来搜索,结合管道使用.例句如下: man -k k1 | grep k2 | grep 2 搜索同时含有k1和k2,且属于系统调用. 最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下: 1.Linux 2.系统调用 3.c语言 但是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的: man 3 printf 即查找c语言中printf的用法. grep -nr 这条语句可以用来查找关键字

20145216史婧瑶《信息安全系统设计基础》第3周学习总结

20145216史婧瑶<信息安全系统设计基础>第3周学习总结 教材学习内容总结 十六进制表示法C表示法以0x或0X开头的数字常量为十六进制进制转换常用进制:二进制(B),十进制(D),八进制(O或者Q),十六进制(H) 转换为二进制-十六进制相互转换,二进制的四位数字对应十六进制的一位数字. 同理,二进制与八进制的转化是三位对应一位. 但是通常情况下,进制转换都以二进制为桥梁进行转换. 对于一个字长为w位的机器来说,虚拟地址的范围是0~2^w-1.程序最多访问2的w次方个字节. 数据大小: 在

java8 hash算法

一.hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值.哈希值是一段数据唯一且极其紧凑的数值表示形式.如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值.要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性.一般用于快速查找和加密算法. 二.jdk的hash算法实现 (1)Interger private final int value; @Override public int

20145321 《信息安全系统设计基础》第3周学习总结

20145321<信息安全系统设计基础>第三周学习总结 教材学习内容总结 第二章 信息的表示和处理 计算机存储和处理信息以二值信号表示. 三种最重要的数字表示法 无符号:基于传统的二进制表示法,大于等于0 补码:有符号整数 浮点数:实数的科学计数法的以二进制为基数的版本 p22: 二进制.八进制.十进制.十六进制进制转换(方法:使用二进制作中间结果)十六进制:以0x或0X开头表示,字符A-F可大写.可小写.也可混用. p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的

20145239 《信息安全系统设计基础》第3周学习总结

20145239 <信息安全系统设计基础>第3周学习总结 教材学习内容总结 三种数字表示 无符号:编码基于传统的二进制表示法,表示大于或等于0的数字. 补码:编码表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字. 浮点数:编码是表示实数的科学记数法的以二为基数的版本. 漏洞原因:因为3种数字精度有限所以计算机会因溢出而使用求模运算,使无限的明文对应有限的密文,因此会出现漏洞. 进制转换 在计算机导论课程中已掌握. 用gcc –m32可以在64位机上生成32位代码: 寻址和字节

20145207《信息安全系统设计基础》第3周学习总结

教材学习内容总结 1. 三种重要的数字表示 (1)无符号数.有符号数.浮点数 正数的原码.反码以及补码是其本身. 负数的原码是其本身,反码是对原码除符号位之外的各位取反,补码则是反码加1. (2)为什么用补码表示 能够统一+0和-0的表示 采用原码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 000 0000: 采用反码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 111 1111: 采用补码表示,+0的二进制表示形式为0 000