IEEE 754 浮点格式的指数偏差或减法“指数 - 偏差”

问题描述 投票:0回答:1

目前正在查看一些材料,我看到 IEEE 754 浮点格式中写着:

x = (-1)^S × (1 + 分数) × 2^(指数 - 偏差)

  1. 我不清楚 2^(指数 - 偏差) 表示 2 上升到指数偏差,或者从指数中减去偏差的结果,即指数负偏差。

我正在查看一些示例,看到它表示数字 0.75,当将其转换为单精度浮点编码时,指数将为 -1 + Bias,或 -1 + 0111 1111。这很奇怪,因为指数 = power +偏见。

  1. 但是看这个视频:https://youtu.be/K1XgRO4pvFs?t=352 它的指数部分不知何故为 2 ^ (e - 127),其中 127 被减去。来自此来源:https://class.ece.iastate.edu/arun/CprE281_F05/ieee754/ie3.html#:~:text=For%20single%2D precision%20floating%2Dpoint,the%20exponent%20%3D% 20power%20%2B%20bias,但是,“如何找到偏差指数?对于单精度浮点,偏差=127。对于双精度,偏差=1023。偏差与偏差之和2 的幂是实际进入 IEEE 754 字符串的指数,请记住,指数 = 幂 + 偏差。”我错过了什么?

澄清一下,x = (-1)^S × (1 + 分数) × 2^(指数 - 偏差) 是指数偏差还是指数-偏差?

为什么在这个视频中 https://youtu.be/K1XgRO4pvFs?t=352 是 2 ^ (e - 127),其中 127 被减去?

encoding decimal ieee-754 floating ieee
1个回答
0
投票

如果我们区分数学值和值的编码,这会更容易理解。

考虑一些我们放入普通二进制浮点形式的数字:(−1)sf•2e。这里 s 表示符号,f 是小数部分(称为尾数),e 是指数。 s 根据数字是正数还是负数为 0 或 1,1 ≤ f < 2, and e 为整数。对于这个答案,我假设 f 适合 24 位,因此以二进制 32 格式表示它时不需要舍入,也称为“单精度”。

我们将把这个数字编码为 32 位的字符串:1 位称为 S,8 位称为 E,23 位称为 F。虽然这些是位串,但我们还将用二进制数字来标识它们,并将它们称为具有这些数字的值。因此,就我们的目的而言,位串 01111111 是数字 127。

标志简单;我们只需设置 S = s

对于指数,如果 e 处于格式的正常指数范围 [−126, 127] 内,我们使用 E = e + 127 对 E 进行编码。(如果 e 为超出此范围的内容不在此答案中涵盖。)

对于分数,我们设置 F = (f−1)•223。这相当于将 f 写为 1.bbbbbbbbbbbbbbbbbbbbbbbb 形式的 24 位二进制数字,其中每个 b 是一个位,然后将 F 设置为那些尾随的 23 位。

连接这些位串 SEF 得到 32 位,以二进制 32 格式编码数字 (−1)sf•2e

上面使用的数字,[−126, 127]表示指数范围,127表示偏差,是binary32类型的固定参数。它们不会根据正在编码的数字而改变。

再次强调,为了保持清晰,请记住 fe 是数学格式中数字的分数部分和指数。 f 分数部分,e 指数。

F 不是分数部分(或有效数),E 不是指数。 F是分数部分的编码E是指数的编码。它们是告诉您分数和指数的数字或位字符串。它们不是实际的分数或指数。 (此外,F本身是不完整的。要了解一般情况下的f,您必须知道E,这样您才能确定该数字是正常还是次正常。)

© www.soinside.com 2019 - 2024. All rights reserved.