Wie überprüfe ich, ob eine Zahl eine Zweierpotenz ist?
Hier sind ein paar Möglichkeiten, um zu überprüfen, ob eine Zahl eine Zweierpotenz ist:
1. Verwende den bitweisen Und-Operator:
```python
def is_power_of_two(n):
    return n > 0 and (n & (n - 1)) == 0
```
Dies funktioniert, indem 1 von n abgezogen wird, was das am wenigsten signifikante Bit löscht. Wenn n eine Potenz von 2 ist, dann ist n & (n-1) gleich 0. Andernfalls ist es ungleich 0.
2. Überprüfe, ob nur ein Bit gesetzt ist:
```python 
def is_power_of_two(n):
    return n > 0 and bin(n).count('1') == 1
```
Hierbei wird die Zahl mit bin(n) in eine Binärzahl umgewandelt und dann die Anzahl der 1en gezählt. Wenn nur ein Bit gesetzt ist, handelt es sich um eine Zweierpotenz.
3. Verwende den Logarithmus:
```python
def is_power_of_two(n):
    return n > 0 and (math.log2(n)).is_integer() 
```
Wenn n eine Zweierpotenz ist, dann ist log2(n) eine Ganzzahl. Andernfalls ist es keine Ganzzahl.
4. Teile wiederholt durch 2:
```python
def is_power_of_two(n):
    if n <= 0:
        return False
    while n > 1: 
        if n % 2 != 0:
            return False
        n = n / 2
    return True
```
Dies funktioniert, indem wiederholt durch 2 geteilt wird. Wenn n an irgendeinem Punkt nicht durch 2 teilbar ist, dann wissen wir, dass es sich nicht um eine Zweierpotenz handelt. Andernfalls erreichen wir schließlich 1 und geben True zurück.
Hoffentlich hilft dir das weiter! Lass mich wissen, wenn du weitere Fragen hast.