私はXcode(Objective-C)にいます。なぜ私は短いフロートを持っていないのですか?
short float
を使用できないのはなぜですか?エラー'short float' is invalid
が表示されます。
私はXcode(Objective-C)にいます。なぜ私は短いフロートを持っていないのですか?
short float
を使用できないのはなぜですか?エラー'short float' is invalid
が表示されます。
あなたはこのようなビットフィールドを使用して短いフロートを実現することができます。
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ターゲット(。INC iPhone)に、あなたはここでGCCのドキュメントを読んで、半精度浮動小数点値を持つことができます:http://gcc.gnu.org/onlinedocs/gcc/Half_002dPrecision.html
これはアセンブリで浮動小数点命令を利用するつもりはないでしょうか?私は計算中に浮動小数点にマーシャリングして、マシンが計算したいと思う方法を決定させ、後でそれを16ビットに非整列化することができると思います。 – Dmitry
私はC言語でショートフロートを見たことがありません。
short int
がありますが、short float
はリチャードが指摘したように意味がありません。
short
とlong
は整数のためのものである、フロートの等価はhalf
であり、 double
。しかし、half
は目的関数-Cでは使用できません(プロセッサには半分の長さの浮動小数点を扱うための命令がありません)が、GLSLのようないくつかのGPU言語で見つけることができます。
意味がありません。フロートは(通常)IEEE 754として実装されていますが、これは「短い」値には意味がありません。 –
@ RichardJ.RossIII実際には16ビットのみのIEEE 754の「半精度」モードがあります。 – mkb