IEEE 754 浮点数
发布时间
阅读量:
阅读量
IEEE 754 浮点数
- 格式
- 特殊值
- 具体实现
格式
IEEE 754标准规范了浮点数格式的构成要素:符号字段、指数字段"eb"以及有效数字字段"mmm"。其表示方法为:±1.mmm×2^(eb-偏移值),其中二进制运算占主导地位。在一个典型的32位浮点运算单元中包含以下组成部分:1个符号字段、8个指数字段(存储指数信息)以及23个有效数字字段(存储有效数字),具体结构如下:

- 阶码:表示指数加上一个偏移量(offset),其大小取决于阶码位的数量(e)。具体而言,在32位浮点型单元中(Word),由于存在8个比特用于编码阶码信息(e=8),因此其偏移量等于2^{(e-9)} - 1(即2^{(8-9)} - 1 = -\frac{9}{8})。当该偏移量被加至原始指数时,则会得到对应的二进制指数形式。
- 尾部:类似于科学记数法中的尾部数值,在计算机内部存储时由于正规化的特性(即小数十进制形式始终以'有效数字的第一位数字开头),因此实际存储的是小数点后部分。
- 小数点前固定为'有效数字的第一位数字'(通常情况下是'一'),而其余的小数值则由存储的位置决定。
- 在这种情况下,默认省略掉这个固定的前导数字。
- 具体而言,在这种存储格式下:
- 当尾数值显示为"abc"时,则实际数值相当于"abc"加上隐含的小数值部分
- 这种方式能够有效提高数据的精度
特殊值
IEEE 754 标准将指数位全为 0 和全为 1 用特殊情况以表示一些特殊值。
- ±0:由于规范化浮点数格式表示为 1.\text{mmm} \times 10^e 的形式,在这种情况下无法表示零值。因此零值被视为特殊情况。
- ±∞:当阶码全为1且尾数全为零时,则表示正负无穷大(依据符号位确定),任何数除以零都会产生无穷大数值。
- NaN:当阶码全为1且尾数不完全为零时,则表示非数字(NaN)。此类情况通常出现在非法运算中。
- 非规约数:如果阶码全部为零,则非规约数的表示方式变为 \pm(\text{mmm} \times 2^{-\text{偏移量}}) 的形式,并能表示趋近于零的小数值。对于32位浮点型来说其最小指数是-126(对于64位则不同)。当尾部数值全部为零时,则该非规约数值退化为常规的\pm{Zero}。
具体实现
- 单精度:包含有总共三十二个二进制数字的结构体系,在其中一位用于存储符号信息、八位用于指数编码以及剩余的二十四比特来存储尾数值信息。其数值范围为1.175494 \times {10^{-}^{38}}到3.402823 \times {10^{+}^{38}}。
- 双精度:包含有六十四比特的信息单元,在其中一位用于存储符号信息、十一位用于指数编码以及剩余的五十二比特来存储尾数值信息。其数值范围为2.225073 \times {10^{-}^{308}}到1.797693 \times {10^{+}^{308}}。
现代计算机系统普遍采用IEEE 754标准来表示浮点数。假设我们要将十进制数A转换为二进制形式进行存储,则首先将其表示为其二进制展开式B。经过规格化处理后得到的是以2为底的指数形式:C×2^D。其中符号位设置为零值(因为数值A为正),其阶码字段编码结果为十进制数值十一(即二进制B_8B_4B_2B_₁),其尾数字段编码结果则为十六进制数值五(即二进制b_7b_6b_5b_4b_3b_2b_₁b₀)。计算得出最终的机器数表示如下:符号位s=O;阶码字段\text{E}=B_{8}B_{4}B_{2}B_{₁}=A+B+C-D+E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z;尾数字段\text{M}=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z。为了保证精度,在编码过程中需对阶码字段进行偏移处理,默认偏移量取值为十二�(十六进制中的 7F$)。因此最终所得的结果对应于上述计算过程中的具体步骤
练习:确定数值范围
全部评论 (0)
还没有任何评论哟~
