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