我们有一个符合16位的浮点代码,符号为1位,指数为4位,有效位为11位。我已经读过浮点数,并且能够找到归一化指数的范围。我认为这将是1-bias和2 ^(exp-1)-1,这导致[-6,7]的范围。
我也一直试图找到正非规范化值的范围,代码的中值,正标准化值的中位数和正值的中位数。
我知道找到最大的正归一化值,我需要计算 0 0000 11111111111(最小)和0 1110 11111111111(最大)。此外,能够编码多少个不同的值?它会是2 ^ 16吗?
答案 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)。