Muszę ocenić logarytm dowolnej podstawy, bez znaczenia, z pewną precyzją. Czy istnieje algorytm do tego? Programuję w Javie, więc nie mam problemów z kodem Java.Algorytm logarytmiczny
How to find a binary logarithm very fast? (O(1) at best) może być w stanie odpowiedzieć na moje pytanie, ale nie rozumiem tego. Czy można to wyjaśnić?
Sztuczki wspomniane w tym pytaniu wykorzystują sposób, w jaki liczby są przechowywane w pamięci. Lepiej polegaj na metodach Math (lub BigInteger/BigDecimal), jeśli nie w pełni rozumiesz te sztuczki. W każdym razie wykorzystują fakt, że liczby są wewnętrznie reprezentowane bardzo blisko ich reprezentacji w bazie 2. W Javie nie masz żadnych związków, zamiast tego dostajesz nieprzetworzone kawałki podwójnego za pomocą [Double.doubleToRawLongBits] (http: // docs .oracle.com/javase/6/docs/api/java/lang/Double.html # doubleToRawLongBits (double)). – ignis
BigInteger i BigDecimal nie zawierają metod logowania. Dokładnie – Justin
. dla ints użyć tego oczywistego przesunięcia bitowego w zliczanej pętli. – vaxquis