Avatar ·

Como verificar se um número é uma potência de dois em C#?

Olá a todos! Sou novo em C# e me deparei com uma tarefa: preciso escrever um método que verifica se um número inteiro é uma potência de dois (1, 2, 4, 8, 16, 32, etc.). Parece uma tarefa simples, mas não consigo pensar em uma solução elegante. Até agora escrevi 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; } ``` Ele parece funcionar, mas acho que é muito verboso e ineficiente. Ouvi dizer que existe uma maneira esperta com bitwise operations, mas não entendo como funciona. Vocês podem sugerir uma solução mais correta e rápida? Estou especialmente interessado em: 1. Como fazer a verificação sem loops? 2. O que são bitwise operations e como aplicá-las? 3. Existem métodos embutidos no .NET para isso? 4. Como lidar com números negativos e zero? Agradeço desde já pela ajuda! O código deve funcionar no .NET Core, se isso for importante.