Avatar ·

¿Cómo verificar si un número es potencia de dos en C#?

¡Hola a todos! Soy nuevo en C# y me encontré con una tarea: necesito escribir un método que verifique si un número entero es potencia de dos (1, 2, 4, 8, 16, 32, etc.). Parece una tarea simple, pero no puedo encontrar una solución elegante. Por ahora escribí este código: ```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; } ``` Parece que funciona, pero creo que es demasiado engorroso e ineficiente. He oído que hay algún truco con operaciones bitwise, pero no entiendo cómo funciona. ¿Pueden sugerir una solución más correcta y rápida? Me interesa especialmente: 1. ¿Cómo hacer la verificación sin loops? 2. ¿Qué son las operaciones bitwise y cómo aplicarlas? 3. ¿Hay métodos integrados en .NET para esto? 4. ¿Cómo manejar números negativos y cero? ¡Gracias de antemano por la ayuda! El código debe funcionar en .NET Core, si es importante.