2014-12-25 45 views
0

我需要存儲大量不同的值作爲0到1之間的雙精度,以獲得均勻的表示。例如,一個ARGB值 - 這是一個32位整數。如果我將它作爲一個倒數存儲,可以雙打唯一地表示每個整數值嗎?我知道有足夠的位可以做到,但我不確定指數間距是否會阻止這種情況發生。浮點數中整數的互補表示

回答

0

標準雙有52位尾數,所以是的,它能夠保存並精確地重現32位整數。 另一個問題是要求它們必須在0和1之間。 相反並不是這樣做的方式!反例:1/3不能用雙數來表示。 您將不得不劃分值來確保範圍。你只能分兩次冪來保證精確度。所以鑑於你有無符號的32位值轉換他們加倍,然後除以2^32。如果您在閱讀時恢復了這些值,則應該完全重現。在C或C++中,甚至還有特殊的指令來直接操作float或double的指數和尾數,這些可能更有效和更安全。

+0

對不起,我忘了迴應。我的範圍總是兩個冪(如0x1/0xFFFF),所以應該沒問題。由於它不是一個瓶頸生病只是保持與現在的標準算術:) – Shaggi