effizient beurteilen, ob eine Reihe von Zahlen 2 ist: Erforschen
Bei der Programmierung ist es eine sehr nützliche Fähigkeit, zu beurteilen, ob eine bestimmte Nummer 2 eine sehr nützliche Fähigkeit ist. Um dieses Problem effektiv zu lösen, wurden verschiedene Algorithmen aufgeworfen. Einfacher iterativer Algorithmus
Eine Methode besteht darin, zu prüfen, ob die Zahl der Leistung von 2 aufeinanderfolgenden Zeiten entspricht, bis das Übereinstimmungselement oder die Zahl geringer sind als die aktuelle Leistung. Obwohl dieser Algorithmus einfach und klar ist, ist er für große Zahlen ineffizient.
Berechnen Sie die Berechnung
Eine andere Methode untersucht die Beziehung zwischen der Leistung der Anzahl und der Anzahl der Zahlen am Ende der Zahl. Durch Vergleich der berechneten Paarung und des Ganzzahlwerts der vier Häuser können Sie die Möglichkeit bewerten, ob es sich um die Leistung von 2 handelt. Diese Methode weist jedoch Genauigkeitsbeschränkungen in den Berechnungen mit zwei Präzisionsberechnungen auf.
Positions Betriebsfähigkeiten: Identifizieren Sie den Nicht -Zero -niedrigen
Ein sehr effizienter Algorithmus verwendet Bit Operator (&), um festzustellen, ob eine Zahl 2 Strom ist. Es prüft, ob die Nummer nicht -Zero ist und ob das Ergebnis der Anwendung der Anwendungsposition und das Ergebnis von (x -1) gleich 0 ist. Diese Technik identifiziert effektiv, ob alle Tiefststände des minimal gültigen Bits der Zahl Null sind, was das Merkmal der Leistung von 2 ist.Erläuterung der Betriebsfähigkeiten
Die Bitoperation und die Bitoperation zwischen der Zahl und der (x -1)) subtrahieren 1 von der binären Darstellung der Zahl. Wenn das Ergebnis 0 ist, bedeutet dies, dass alle Stellen in der binären Darstellung von Zahlen Null sind. Da dieses Attribut für die Leistung von 2 gilt, zeigen die Ergebnisse nicht -Zero -Ergebnisses, dass die Zahl nicht die Leistung von 2 ist.
Die Bedingung der Null -Behandlung
Obwohl der Algorithmus die Leistung von 2 effektiv identifiziert, verwendet er fälschlicherweise die Leistung des Null -Berichts auf 2. Um diese abnormale Situation zu lösen, können Sie eine zusätzliche Bedingung hinzufügen, um die Leistung auszuschließen, die nicht als 2: angesehen wird
Diese Optimierung stellt sicher, dass der Algorithmus genau bestimmt, ob die angegebene Zahl die Leistung von 2 ist und Null ausschließt.
Das obige ist der detaillierte Inhalt vonGibt es einen effizienten Algorithmus, um festzustellen, ob eine Zahl eine Leistung von 2 ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!