Wie überprüft man, ob eine Zahl eine Zweierpotenz in C# ist?
Hallo zusammen! Ich bin neu in C# und habe eine Aufgabe: Ich muss eine Methode schreiben, die prüft, ob eine ganze Zahl eine Zweierpotenz ist (1, 2, 4, 8, 16, 32 usw.). Es scheint eine einfache Aufgabe zu sein, aber ich kann keine elegante Lösung finden.
Bisher habe ich diesen Code geschrieben:
```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;
}
```
Er funktioniert irgendwie, aber ich finde ihn zu umständlich und ineffizient. Ich habe gehört, dass es einen cleveren Trick mit Bitoperationen gibt, aber ich verstehe nicht, wie das funktioniert. Könnt ihr mir eine korrektere und schnellere Lösung vorschlagen?
Besonders interessieren mich:
1. Wie macht man die Überprüfung ohne Schleifen?
2. Was sind Bitoperationen und wie wendet man sie an?
3. Gibt es eingebaute Methoden in .NET dafür?
4. Wie behandelt man negative Zahlen und Null?
Vielen Dank im Voraus für die Hilfe! Der Code sollte auf .NET Core laufen, falls das wichtig ist.