Le code est simple et clair.
Une méthode pour résoudre ce problème est d'itérer 2 puissance continue, vérifiez si une puissance -in -Ul correspond au numéro d'entrée. Cela peut être mis en œuvre comme suit: Méthode 2: Le nombre d'algorithmes de calcul
Une autre méthode implique le calcul de l'utilisation du nombre de paires. Cependant, cela nécessite une prudence car les calculs flottants peuvent entraîner une précision. Considérez le code suivant:
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; }
La solution optimale: méthode informatique bit Les solutions plus efficaces sont l'utilisation des opérations de bits. La puissance de 2 a une caractéristique unique: lorsque le (x -1) est effectué et l'opération (&), la valeur de résultat est toujours 0. Cet attribut peut être exprimé comme suit: <表示>
Afin d'éliminer le candidat de la puissance de zéro comme 2, il peut être légèrement modifié:
private bool IsPowerOfTwo_2(ulong number) { double log = Math.Log(number, 2); double pow = Math.Pow(2, Math.Round(log)); return pow == number; }
Cette méthode fournit une solution efficace et directe pour déterminer si le nombre est 2.
bool IsPowerOfTwo(ulong x) { return (x & (x - 1)) == 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!