16位浮点范围和中位数

时间:2016-10-18 16:53:28

标签: floating-point range median

我们有一个符合16位的浮点代码,符号为1位,指数为4位,有效位为11位。我已经读过浮点数,并且能够找到归一化指数的范围。我认为这将是1-bias和2 ^(exp-1)-1,这导致[-6,7]的范围。

我也一直试图找到正非规范化值的范围,代码的中值,正标准化值的中位数和正值的中位数。

我知道找到最大的正归一化值,我需要计算 0 0000 11111111111(最小)和0 1110 11111111111(最大)。此外,能够编码多少个不同的值?它会是2 ^ 16吗?

1 个答案:

答案 0 :(得分:4)

如果您使用类似ieee-754的格式,以下内容才有意义,这是合理的,因为您似乎遵循该标准来确定上面的最大数字。我完全从字面上理解了你的隐含问题,我希望它有用。

非规范化值的范围

0 0000 00000000000 - 0 0000 11111111111

那是0 to 2^-6 * (1-2^-11)

代码的中位数值

中位数只是中间人的中间人。所有代码。如果您按代码订购所有内容,则以下是两个中心内容:

0 1111 11111111111
1 0000 00000000000

那是在NaN和零之间!如果你想插入一个介于零和NaN之间的值,你的回答将是NaN。如果你只是按值对它们进行排序,那么说0.0是浮点数正常顺序的中心代码可能更有意义。

正标准化值的中位数

我们需要找到范围的中间区域:

0 0001 00000000000
0 1110 11111111111

添加未计算的代码,将代码除以2。介于两者之间。

0 0111 11111111111
0 1000 00000000000

那是关于2.0的。

正值的中位数。

类似的逻辑,得到:     0 0111 01111111111

那是1.5左右。 (包含额外范围的尾数位,将你的中位数缩小一半尾数范围是有意义的)

可编码的不同值的数量

如果您区分不同的NaN和-0

,则为2 ^ 16

如果排除NaN,则必须为每个符号减去所有代表NaN的代码(所有非零尾数):2 ^ 16-2 *(2 ^ 11-1)。

相关问题