Heim >Backend-Entwicklung >C++ >Ist eine Nummer eine Leistung von 2? Ein bitweise Ansatz
beurteilen, ob eine Reihe von Zahlen 2 ist, erfordert einen effizienten und genauen Algorithmus. In diesem Artikel wird ein Algorithmus vorgestellt, der auf Bitoperationen basiert:
Dieser Algorithmus verwendet die Position und das operative Symbol (&), wodurch die binäre Darstellung der Betriebszahl verglichen wird. Insbesondere wurde überprüft, ob die Eingangszahl nach dem Ergebnis von 1 Reduktion und dem Ergebnis der Abnahme Null ist. Wenn eine Zahl eine Leistung von 2 ist, mit Ausnahme der niedrigsten Niveau des doppelten -sofachen Levels, beträgt der Rest 0. Der Betrieb von minus 1 wird den niedrigsten Wert auf 0, so dass alle Bits mit Ausnahme der niedrigsten Position 0 sind. Wenn die Eingangszahl die Leistung von 2 ist, ist das Ergebnis der Berechnung Null.
<code class="language-c++">bool IsPowerOfTwo(unsigned long long x) { return (x != 0) && ((x & (x - 1)) == 0); }</code>
Betrachten Sie beispielsweise die Zahlen 4, es ist die Leistung von 2. Die Binärdatei von 4 wird durch 100 dargestellt. Ein Minus 1 erhält 3 und seine Binärdatei wird als 011.100 und 011 ausgedrückt. Das Ergebnis der Position und des Betriebs beträgt 000. Da das Ergebnis Null ist, wird bestätigt, dass 4 die Leistung von 2 ist.
Dieser Algorithmus hat eine hohe Berechnungseffizienz und bietet eine zuverlässige Methode, um zu prüfen, ob die angegebene Zahl die Leistung von 2 ist (außer 0). Wenn Null benötigt wird, müssen Sie nur eine einfache Nicht -Null -Inspektion hinzufügen, wie in der ersten Zeile des Codefragments gezeigt.
Das obige ist der detaillierte Inhalt vonIst eine Nummer eine Leistung von 2? Ein bitweise Ansatz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!