Ich muss einen Logarithmus von jeder Basis, es spielt keine Rolle, bis zu einer gewissen Genauigkeit. Gibt es dafür einen Algorithmus? Ich programmiere in Java, also geht es mir gut mit Java-Code.Logarithmus-Algorithmus
How to find a binary logarithm very fast? (O(1) at best) könnte in der Lage sein, meine Frage zu beantworten, aber ich verstehe es nicht. Kann es geklärt werden?
Die Tricks, die in dieser Frage erwähnt werden, nutzen die Art aus, wie Zahlen im Speicher gespeichert werden. Sie sollten sich besser auf die Methoden von Math (oder BigInteger/BigDecimal) verlassen, wenn Sie diese Tricks nicht vollständig verstehen. Jedenfalls nutzen sie die Tatsache aus, dass Zahlen intern sehr eng mit ihrer Repräsentation in Base 2 vertreten sind. In Java haben Sie keine Vereinigungen, stattdessen erhalten Sie die rohen Bits eines Double über [Double.doubleToRawLongBits] (http: // docs .oracle.com/javase/6/docs/api/java/lang/Doppel.html # doubleToRawLongBits (double)). – ignis
BigInteger und BigDecimal enthalten keine Protokollmethoden. – Justin
genau. Für Ints verwenden Sie diese offensichtliche Bitverschiebung in einer gezählten Schleife. – vaxquis