¿La forma más rápida de iniciar sesión en Java?
Me gustaría obtener el signo de unfloat
valor como unint
valor de -1 o 1.
Evitar los condicionales siempre es una buena idea para reducir el costo computacional. Por ejemplo, una forma en la que puedo pensar sería utilizar un rápidobit-shift
para obtener la señal:
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.
O más concisamente:
int sign = (~(a >> 31) << 1) - 1;
¿Parece esto un buen enfoque?¿Funcionará para todas las plataformas, dadas las preocupaciones sobre el endianness (como MSB tiene el signo)?