首页 > 其他分享 >IEEE 754浮点数表示法

IEEE 754浮点数表示法

时间:2023-02-03 20:55:32浏览次数:45  
标签:规格化 754 cdot 浮点数 表示法 二进制 小数位 IEEE

浮点数的二进制表示

在理解二进制浮点数的表示之前,首先先从十进制的浮点数表示开始,十进制的浮点数表示如下

\[d_{m}d_{m-1}...d_{1}d_{0}.d_{-1}.d_{-2}...d_{-n} \]

每一个十进制数字\(d_{i}\)的范围为\([0,9]\)。这个十进制浮点数表示法的值为

\[d=\sum_{i=-n}^{m}10^{i}\cdot d_{i} \]

二进制浮点数表示和十进制浮点数的类似,如下所示

\[b_{m}b_{m-1} \cdots b_{1}b_{0}.b_{-1}b_{-2}b_{-3} \cdots b_{-n} \]

每一个二进制数字\(b_{i}\)的范围为\([0,1]\)。因此,这个二进制浮点数表示法的值为

\[\sum_{i=-n}^{m}2^{i} \cdot b_{i} \]

举个例子,例如二进制浮点数表示法111.111的值为:

\[1 \cdot 2^2+1 \cdot 2^1+1 \cdot 2^0+1 \cdot 2^{-1}+1 \cdot 2^{-2}+1 \cdot 2^{-3}=4\frac7 8 \]

IEEE754浮点数表示法

IEEE浮点数由三部分组成,分别为符号位\(s\),指数位\(exp\)和小数位\(frac\)。单精度浮点数用32位表示,符号位\(s\)占1位,指数位\(exp\)占8位,小数位\(frac\)占23位。双精度浮点数用64位表示,其中符号位\(s\)占1位,指数位\(exp\)占11位,小数位\(frac\)占52位。以单精度浮点数为例:

\[b_{31} \space \space b_{30}b_{29}b_{28}b_{27}b_{26}b_{25}b_{24}b_{23} \space \space b_{22}b_{21}b_20{}...b_{0} \]

\(b_{31}\)为符号位\(s\),\(b_{30}-b_{23}\)为指数位\(exp\),\(b_{22}-b_{0}\)为小数位\(frac\)。

IEEE浮点数表示法编码

IEEE浮点数表示法的编码可以分为三个种类,规格化值,非规格化值,特殊值。

规格化值

当指数位不全为0且不全为1的时候为规格化值,这时浮点数的编码为\((-1)^{s} \cdot M \cdot 2^{E}\)。

\(s\)就是符号位的值,也就是说当\(s=1\)的时候,\((-1)^{1}=-1\)表示负数,\((-1)^0=1\)表示正数.

\(E\)等于\(e-Bias\)。\(e\)是由指数位编码的无符号整数,而\(Bias=2^{k-1}-1\)。其中\(k\)为指数位的位数,因此单精度浮点数的\(Bias=2^{8-1}-1=127\),双精度浮点数的\(Bias=2^{11-1}-1=1023\)。由于规格化值的指数位不全为0且不全为1,所以单精度浮点数的指数范围为\([-126,127]\),双精度浮点数的指数范围为\([-1022,1023]\)
\(M=1+f\),其中\(f\)表示的是由小数位\(frac\)编码的二进制小数,即\(0.f_{n-1}f{n-2}...f_0\).因此\(M=1.f_{n-1}f_{n-2}...f_0\),由此可以看出,规格化值会有一个额外的精度.

非规格化值

当指数位全部为0的时候,此时为非规格化值,编码公式为\((-1)^{s} \cdot M \cdot 2^{E}\)。非规格化值的区别有以下几点.首先\(M\)的值就是小数位\(frac\)编码的二进制小数,没有隐藏的额外精度了.其次,\(E\)的计算方式为\(1-Bias\),\(Bias\)的计算方式还是一样的,这样的计算方式是为了实现平滑的过度.

非规格化值的目的有两个。第一个是提供数值0的表示,因为在规格化值中,由于前导1的存在,无法表示数值0,但是在非规格化值中,不存在前导1,所以只要有效位全部为0,指数位也全部为0,那么就可以表示数值0。唯一需要注意的一点是,由于符号位的存在,所以会出现\(+0.0\)和\(-0.0\)。非规格化值的另一个目的是可以表示十分接近0的数字。

特殊值

当指数位全部为1的时候,此时表示特殊值。当小数位全部为0的时候,此时表示无穷,同样由于符号位的存在,\(+\infty\)和\(-\infty\)。当小数位不全部为0的时候,表示\(NaN\)。这个值用于表示某些操作返回的值不能有实数表示,例如\(\infty-\infty\)。

标签:规格化,754,cdot,浮点数,表示法,二进制,小数位,IEEE
From: https://www.cnblogs.com/riasartemis/p/17086199.html

相关文章

  • 【五期邹昱夫】CCF-A(IEEE'22)Dynamic Backdoor Attacks Against Machine Learning Mode
    "SalemA,WenR,BackesM,etal.Dynamicbackdoorattacksagainstmachinelearningmodels[C]//2022IEEE7thEuropeanSymposiumonSecurityandPrivacy(Euro......
  • UVA 11754 code feat (中国剩余定理+暴力枚举)
    题意:给出C,SC,SC,S,......
  • JYY 数据的机器级表示:整数和浮点数
    总结:这节课内容很有趣,但对我来说,可能未来5年都不会用上  啊  啊  没懂,但感觉没必要懂啊  啊 (没懂,暂时应该没必要)啊 啊 啊 啊啊......
  • BC4-牛牛学说话之-浮点数
    题目描述会说整数之后,牛牛开始尝试浮点数(小数),输入一个浮点数,输出这个浮点数。输入描述输入一个浮点数输出描述输出一个浮点数,保留三位小数示例1输入:1.359578输......
  • C标准库 | 字符串转整数/浮点数函数汇总
    在日常LinuxC语言开发中,不可避免会用到字符串转整数或者浮点数的操作,例如带参数的​​main​​​函数中,在​​shell​​下对着某个命令输入一组数字参数,这组数字实际上是字......
  • 05:输出保留12位小数的浮点数
    ​​原题链接​​总时间限制:1000ms内存限制:65536kB描述读入一个双精度浮点数,保留12位小数,输出这个浮点数。输入只有一行,一个双精度浮点数。输出也只有一行,保留12位小数......
  • 04:输出保留3位小数的浮点数
    ​​原题链接​​总时间限制:1000ms内存限制:65536kB描述读入一个单精度浮点数,保留3位小数输出这个浮点数。输入只有一行,一个单精度浮点数。输出也只有一行,读入的单精度......
  • m基于matlab的IEEE802.15.4家庭网络高效节能的有效接入方法
    1.算法描述我们主要从三个方面进行研究。 第一,需要研究基于IEEE802.15.4的接入算法; 第二,在研究IEEE802.15.4的接入算法之后,研究IEEE802.15.4家庭网络的接入算法; ......
  • 什么是浮点数
    像1011.0011这样带小数点的表现形式,完全是纸面上的二进制数表现形式,在计算机内部是无法使用的。那么,实际上计算机是以什么样的表现形式来处理小数的呢?我们一起来看一下。很......
  • 37_Java中的浮点数精确运算
    java中的BigDemcimal用于小数的精确运算构造方法:​ BigDecimal(Stringval)四则运算:​ add(BigDecimalb):加法​ subtract(BigDecimalb):减法​ multiply......