Avatar ·

Comment vérifier si un nombre est une puissance de deux en C# ?

Bonjour à tous ! Je suis débutant en C# et j'ai rencontré un problème : je dois écrire une méthode qui vérifie si un entier est une puissance de deux (1, 2, 4, 8, 16, 32, etc.). Cela semble simple, mais je n'arrive pas à trouver une solution élégante. Pour l'instant, j'ai écrit ce code : ```csharp public static bool IsPowerOfTwo(int n) { if (n <= 0) return false; while (n > 1) { if (n % 2 != 0) return false; n = n / 2; } return true; } ``` Il semble fonctionner, mais je trouve cela trop lourd et inefficace. J'ai entendu dire qu'il existe une astuce avec les opérations bitwise, mais je ne comprends pas comment cela fonctionne. Pouvez-vous suggérer une solution plus correcte et rapide ? Je suis particulièrement intéressé par : 1. Comment effectuer la vérification sans boucles ? 2. Que sont les opérations bitwise et comment les appliquer ? 3. Existe-t-il des méthodes intégrées dans .NET pour cela ? 4. Comment gérer les nombres négatifs et zéro ? Merci d'avance pour votre aide ! Le code doit fonctionner sur .NET Core, si cela est important.