2012-04-14 140 views
1

有沒有一種有效的方法來使用現有的float32float64格式存儲非負浮點值?存儲非負浮點值

想象默認float32行爲,這使得正/負:

val = bytes.readFloat32(); 

是否可以允許更大的正值,如果負值是沒有必要?

val = bytes.readFloat32() + 0xFFFFFFFF; 

編輯:本質上講,當我知道我僅存儲正值,浮點格式可以被修改一個位,以允許更大的範圍或精度對於相同量的比特。

例如,該float32格式定義爲1位爲標誌,8位世博會,對部分

23位如果我不需要符號位,纔能有8位世博,24位爲分數給相同的32位更高的精度?

+0

你是否認爲它們就像整數可以做成無符號整數並得到另一點?我不這麼認爲......或者已經完成了。 – 2012-04-14 15:49:52

+0

你真的需要那麼多額外的範圍嗎? – Mysticial 2012-04-14 15:50:07

+2

告訴我們更多關於你的問題。你爲什麼想這樣做?你可能會問錯誤的問題。 – TonyK 2012-04-14 15:57:08

回答

3

浮點數(float32float64)有一個明確的符號位。對於浮點數不存在無符號整數的等效項。

因此,沒有簡單的方法將正浮點數的範圍加倍。

2

不,不是免費的。

您可以使用其他數字表示法以多種方式擴展範圍/精度。意圖不明確,如果您想使用另一個數字表示(相同大小)的範圍和精度floatdouble,性能通常會很差。

只要堅持floatdouble除非性能/存儲非常非常重要,並且您可以使用其他數字表示法來表示您的值(或更好!)。