除了 +0/-0 之外,是否存在评估为相同值的非规范化浮点数?

Are there denormalized floats that evaluate to the same value apart from +0/-0?

散列浮点数
我想感受哈希函数的浮点数(单数、双数等)。
我希望散列函数为真正相同但具有不同二进制表示的事物生成相同的散列。

因此 +0/-0 应该归一化。
许多 NaN 应该合并为一个表示。
+Inf 相同(与 -Inf 不同)等

问题
除了 +0/-0 之外,是否有非规范化的浮点数,它们实际上转换为相同的离散值,或者我可以直接对它们的二进制表示进行哈希处理,而不必担心为相同的值生成不同的哈希值?

奖金问题: 如果有,除了使用 frexp 之外,将这些非规范化转化为唯一表示的最快方法是什么?
(最好在 X64 SSE2 程序集中回答,但是 C 也可以)。

出于性能原因,我想在将浮点数输入哈希之前做尽可能少的准备工作。我不关心兼容性。

Apart from +0/-0, are there denormalized floats, which really translate to the same discrete value, or can I just hash their binary representation as is, without fear of generating different hashes for identical values?

没有从表示到其他“真实”值的转换。只有 IEEE 754 相等,这是一个等价关系,但使一些具有不同表示的值相等。 +0.0 和 -0.0 是唯一具有不同表示形式且相等的浮点值。

您无需对 NaN 的多种表示形式做任何特殊处理,所有 NaN 都是不同的(对于 IEEE 754 等式),即使它们具有相同的表示形式。因此 NaN 不需要具有相同的散列。 NaN 的相同表示甚至不需要与其自身具有相同的哈希值。