2012-05-07 45 views
2

我在Xcode(Objective-C)中。爲什麼我不能有一個短暫的浮動?

爲什麼我不能有short float?我收到錯誤'short float' is invalid

+0

因爲它沒有意義。浮點數(通常)實現爲IEEE 754,這對於「短」值是沒有意義的。 –

+5

@ RichardJ.RossIII IEEE 754有一個「半精度」模式,實際上它只有16位。 – mkb

回答

3

,你可以使用位域這樣實現短的浮動:

typedef struct shortFloat { 
    char sign : 1; 
    char exponent : 5; 
    short significand : 10; 
} shortFloat; 

shortFloat shortFloat_add(shortFloat s1, shortFloat s2); 
shortFloat shortFloat_sub(shortFloat s1, shortFloat s2); 
shortFloat shortFloat_mul(shortFloat s1, shortFloat s2); 
shortFloat shortFloat_div(shortFloat s1, shortFloat s2); 

但你必須編寫自己的浮點運算。

此外,ARM的目標(增量iPhone),你可以有一個半精度浮點值,在這裏閱讀GCC文檔:http://gcc.gnu.org/onlinedocs/gcc/Half_002dPrecision.html

+0

這不會利用匯編中的浮點指令,但它會嗎?我想它可以在計算過程中被編組,以讓機器決定如何計算它,然後將它解組爲16位。 – Dmitry

0

我從來沒有見過C語言基礎的短浮點。

short int存在,但short float沒有理由像理查德指出的那樣。

3

shortlong是整數,等效於花車halfdouble。然而,half在Objective-C中不可用(處理器沒有處理半長浮點的任何指令),但可以在某些GPU語言(如GLSL)中找到。

相關問題