16位浮点范围和中位数

Lar*_*rry 1 floating-point range median

我们有一个适合16位的浮点代码,其中1位代表正负号,4位代表指数,11位代表有效位。我已经阅读了有关浮点的内容,并能够找到标准化指数的范围。我认为这将是1-bias和2 ^(exp-1)-1导致[-6,7]的范围。

我也一直在尝试查找正归一化值的范围,代码的中值,正中归一化值的中值和正值的中值。

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

Cas*_*rrw 5

仅当您使用类似于ieee-754的格式时,以下内容才有意义,这很合理,因为您似乎遵循该标准来确定上述最大数量。我已经从字面上回答了您的隐含问题,希望它有用。

非规格化值的范围

0 0000 00000000000 - 0 0000 11111111111
Run Code Online (Sandbox Code Playgroud)

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

代码的中位数

中位数只是所有代码的“中间”。如果您通过代码订购所有东西,那么这是两个主要的东西:

0 1111 11111111111
1 0000 00000000000
Run Code Online (Sandbox Code Playgroud)

在NaN到零之间!如果要插入零和NaN之间的值,则答案将为NaN。如果仅按值对它们进行排序,则说0.0是按浮点数的常规顺序的中心代码可能更有意义。

正归一化值的中位数

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

0 0001 00000000000
0 1110 11111111111
Run Code Online (Sandbox Code Playgroud)

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

0 0111 11111111111
0 1000 00000000000
Run Code Online (Sandbox Code Playgroud)

大约是2.0。

正值的中位数。

类似的逻辑,请获取:0 0111 01111111111

大约是1.5。(这是有意义的,包括额外的尾数位范围,会使您的中位数增加一半的尾数范围)

可以编码的不同值的数量

如果您区分不同的NaN和-0,则为2 ^ 16。

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