浮点数中整数的倒数表示

时间:2014-12-25 12:47:49

标签: ieee-754 floating-point-precision

我需要将许多不同的值存储为0到1之间的双精度值,以获得统一的表示。例如,ARGB值 - 即32位整数。如果我将它存储为倒数,可以双精度唯一地表示每个整数值吗?我知道有足够的位来做,但我不确定指数间距是否会阻止这种情况。

1 个答案:

答案 0 :(得分:0)

标准双精度具有52位尾数,所以是的,它能够保持并精确再现32位整数。 另一个问题是要求它们必须在0和1之间。 互惠不是这样做的方式!反例:1/3不能用双精确表示。 您必须将值除以确保范围。您只能将2的幂除以或乘以保持精确的准确度。因此,假设您有无符号的32位值将它们转换为double,然后除以2 ^ 32。如果您在阅读时将其恢复,则应该准确地再现这些值。在C或C ++中,甚至有特殊指令可以直接操作float或double的指数和尾数,这些指令可能更有效,更安全。