Maison > développement back-end > C++ > Un nombre est-il une puissance de 2? Une approche bitwise

Un nombre est-il une puissance de 2? Une approche bitwise

Linda Hamilton
Libérer: 2025-01-29 19:31:08
original
715 Les gens l'ont consulté

Is a Number a Power of 2?  A Bitwise Approach

Le pouvoir de juger si le nombre est 2 est 2

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);
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal