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.
No answers yet.
Connectez-vous pour laisser une réponse