IEEE754是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IEEE754是啥相关的知识,希望对你有一定的参考价值。

如题
尽详细

IEEE754代码
标准表示法
为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的一位。实数 的IEEE754标准的浮点数格式为:
具体有三种形式:
表3 IEEE754三种浮点数的格式参数
浮点数
类型 存储位数 偏移值( )
阶码E的取值范围 真值表达式
数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制
短实数 1 8 23 32 7FH 127 1~254
长实数 1 11 52 64 3FFH 1023 1~2046
临时实数 1 15 64 80 3FFFH 16383 1~32766
对于阶码为0或为255(2047)的情况,IEEE有特殊的规定。
在浮点数总位数不变的情况下,其精度值与范围值是矛盾的,因此一般的机器都提供有单、双精度两种格式。表4中列出了IEEE754单精度浮点数的表示范围,对于双精度只需要修改一下偏移值和尾数位数即可。
表4 IEEE754单精度、双精度浮点数范围
典型范围 浮点数代码 真 值
数符(Ms) 阶码(E) 尾数(M)
最大正数
最小正数
绝对值最大的负数
绝对值最小的负数 0
0
1
1 11111110
00000001
11111110
00000001 11………11
00………00
11………11
00………00
标准浮点数的存储格式与图1(b)相似,只是在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。对于阶码E的存储形式因为是 127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0.12=-1.0×2-12,这里s=1,M为全0,E-127=-1,E=12610=011111102,则存储形式为:
1 01111110 000000000000000000000000=BE00000016
这里不同的下标代表不同的进制。
参考技术A 定点:即它的小数点的位置是固定的
如3.23
4.21312它们的小数点都在第一位后
浮点:即小数的位数可动
如3.12*e2
0.312*e3
定点表示没啥用
主要是浮点在计算机中用ieee754表示
ieee754代码
标准表示法
为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年ieee(institute
of
electrical
and
electronics
engineers)提出了ieee754标准。该标准规定基数为2,阶码e用移码表示,尾数m用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。实数
的ieee754标准的浮点数格式为:
具体有三种形式:
ieee754三种浮点数的格式参数
类型
存储位数
偏移值
数符(s)
阶码(e)
尾数(m)
总位数
十六进制
十进制
短实数(single,float)
1位
8位
23位
32位
0x7fh
+127
长实数(double)
1位
11

52位
64位
0x3ffh
+1023
临时实数(延伸双精确度,不常用)
1位
15位
64位
80位
0x3fffh
+16383
对于阶码为0或为255(2047)的情况,ieee有特殊的规定:
如果
e
是0
并且
m
是0,这个数±0(和符号位相关)
如果
e
=
2

1
并且
m
是0,这个数是
±无穷大(同样和符号位相关)
如果
e
=
2

1
并且
m
非0,这个数表示为不是一个数(nan)。
标准浮点数的存储在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。对于阶码e的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将e当成二进制真值进行存储。例如:将数值-0.5按ieee754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0.12=-1.0×2-12,这里s=1,m为全0,e-127=-1,e=12610=011111102,则存储形式为:
1
01111110
000000000000000000000000=be00000016
这里不同的下标代表不同的进制。

IEEE 754 中 Infinity 的用例是啥

【中文标题】IEEE 754 中 Infinity 的用例是啥【英文标题】:What are the use cases for Infinity in IEEE 754IEEE 754 中 Infinity 的用例是什么 【发布时间】:2016-08-19 08:37:29 【问题描述】:

我想知道InfinityIEEE-754 下的情况是什么?是在上溢(正无穷大)还是下溢(负无穷大)时使用?

【问题讨论】:

【参考方案1】:

一些计算返回无穷大值,例如-1/0Math.log(0) 返回-Infinity

它们可以对称地用于计算输入,例如2/-Infinity 返回-0

当实际值太大而无法表示时,也会产生无穷大,例如Math.exp(999)Math.exp(709)+Math.exp(709)+Math.exp(709)

但是,当您需要一个大于(或小于)任何其他数字的数字时,或者当您想明确引用无穷大时,它们也可以使用。例如,我通常使用数值范围(区间),即 min, max 结构,当范围不受限制时,我使用无穷大,例如 -Infinity, 3.2,在数学中可以记为 ]-∞, 3.2]

请注意,尽管 JS 生态系统中对无穷大的支持不是那么好。例如 JSON 通常不支持它们(但一些库在这方面有所帮助,例如 gson 或我自己的 parseMore)。

【讨论】:

谢谢,我的这个问题Is it used when overflow (positive infinity) or underflow (negative infinity) occurs 谢谢,你能在这里解释一下any other one 的意思吗但是当你需要一个比任何其他数字更大(或更低)的数字时,它们也会被使用, ? @Maximus 假设您有一个定义了多个阈值的类,并且当某些传感器返回的值大于这些阈值 (if (value>speedThreshold) wakeMaster()) 时,您必须发出警报。现在你不关心其中一个传感器,那么你只需设置speedThreshold=Infinity 谢谢,你把它设置为无穷大,这样在'if'比较中没有数字可以更大?

以上是关于IEEE754是啥的主要内容,如果未能解决你的问题,请参考以下文章

IEEE754 中 inf==inf 的基本原理是啥

IEEE754表示格式是啥?

IEEE 754的简介

由IEEE 754深入理解浮点数

IEEE 754标准如何转换?

ieee754单精度浮点数 表示方法