Ich mag würde das Zeichen eines float
Wert als int
Wert von -1 oder 1.Schnellste Möglichkeit, Java zu erhalten?
Vermeiden conditionals zu bekommen, ist immer eine gute Idee Rechenaufwand zu reduzieren. Zum Beispiel von einer Art, wie ich denken kann, wäre ein schnelles bit-shift
zu verwenden, um das Zeichen zu erhalten:
float a = ...;
int sign = a >> 31; //0 for pos, 1 for neg
sign = ~sign; //1 for pos, 0 for neg
sign = sign << 1; //2 for pos, 0 for neg
sign -= 1; //-1 for pos, 1 for neg -- perfect.
Oder prägnanten:
int sign = (~(a >> 31) << 1) - 1;
- dies wie ein guter Ansatz scheint?
- Wird dies für alle Plattformen funktionieren, wenn man bedenkt, dass Endianess Bedenken bestehen (wie MSB Zeichen hält)?
Ich wusste nicht darüber. Sie haben wahrscheinlich auch Recht bezüglich der Leistung. –
+1 Es * wurde * optimiert und kann Fälle wie NaN usw. behandeln – arshajii
Was ist mit Integer.signum(), Long.signum(), etc? Sie müssen dann nicht zum Associate-Typ wechseln. –