juger si un certain nombre de nombres sont 2 nécessitent un algorithme efficace et précis. Cet article présente un algorithme basé sur les opérations de bit:
Cet algorithme utilise la position et le symbole opérationnel (&), qui compare la représentation binaire du numéro de fonctionnement. Plus précisément, il a vérifié si le nombre d'entrée est nul après le résultat d'une réduction 1 et le résultat de la diminution. Si un nombre est une puissance de 2, à l'exception du niveau le plus bas de la double étanche, le reste est 0. Le fonctionnement de moins 1 transformera le niveau le plus bas sur 0, de sorte que tous les bits, sauf la position la plus basse, seront 0. Si le numéro d'entrée est la puissance de 2, le résultat du calcul sera nul.
bool IsPowerOfTwo(unsigned long long x) { return (x != 0) && ((x & (x - 1)) == 0); }
Par exemple, considérez les nombres 4, c'est la puissance de 2. Le binaire de 4 est représenté par 100. Un moins 1 obtient 3, et son binaire est exprimé en 011.100 et 011, le résultat de la position et de l'opération est de 000. Parce que le résultat est nul, il est confirmé que 4 est la puissance de 2.
Cet algorithme a une efficacité de calcul élevée et fournit une méthode fiable pour vérifier si le nombre donné est la puissance de 2 (sauf 0). Si zéro est nécessaire, il vous suffit d'ajouter une simple inspection non-zéro, comme indiqué dans la première ligne de fragment de code.
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!