, ob die Anzahl der Ziffern 2 ist, ist die Leistung von 2
Der Code ist einfach und klar.
Eine Methode zur Lösung dieses Problems besteht darin, 2 kontinuierliche Leistung zu iterieren und zu prüfen, ob eine Leistung -One mit der Eingangsnummer übereinstimmt. Dies kann wie folgt implementiert werden: Methode 2: Die Anzahl der Berechnungsalgorithmen
Eine andere Methode beinhaltet die Berechnung der Verwendung der Anzahl der Paare. Dies erfordert jedoch Vorsicht, da schwimmende Punktberechnungen eine Genauigkeit verursachen können. Betrachten Sie den folgenden Code:
<code class="language-c#">private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power <<= 1) { if (power == number) return true; if (power > number) return false; } return false; }</code>
Die optimale Lösung: Bit -Computer -Methode effektivere Lösungen sind die Verwendung von Bitoperationen. Die Kraft von 2 hat ein einzigartiges Merkmal: Wenn die (x -1) durchgeführt wird und die Operation (&) der Ergebniswert immer 0 beträgt. Dieses Attribut kann wie folgt ausgedrückt werden:
Um den Kandidaten der Leistung von Null als 2 zu beseitigen, kann er geringfügig geändert werden:
<code class="language-c#">private bool IsPowerOfTwo_2(ulong number) { double log = Math.Log(number, 2); double pow = Math.Pow(2, Math.Round(log)); return pow == number; }</code>
Diese Methode liefert eine effiziente und direkte Lösung, um festzustellen, ob die Zahl 2 ist.
<code class="language-c#">bool IsPowerOfTwo(ulong x) { return (x & (x - 1)) == 0; }</code>
Das obige ist der detaillierte Inhalt vonIst eine Nummer eine Leistung von 2? Wie können wir das effizient bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!