Как вы рассчитываете основание журнала 2 в Java для целых чисел?
Я использую следующую функцию для вычисления лог-базы 2 для целых чисел:
public static int log2(int n){
if(n <= 0) throw new IllegalArgumentException();
return 31 - Integer.numberOfLeadingZeros(n);
}
Есть ли у него оптимальная производительность?
Кто-нибудь знает готовую функцию API J2SE для этой цели?
UPD1 Удивительно для меня, арифметика с плавающей точкой оказывается быстрее, чем целочисленная арифметика.
UPD2 Благодаря комментариям проведу более детальное расследование.
UPD3 Моя целочисленная арифметическая функция в 10 раз быстрее, чем Math.log (n) /Math.log (2).