Problem
Entscheide, ob n gleich 2ᵏ für eine ganze Zahl k ≥ 0 ist (1, 2, 4, 8, …).
Implementiere is_power_of_two(n).
Eingabe
n: Die zu prüfende Zahl.
Ausgabe
Gib true zurück, wenn n eine Zweierpotenz ist.
Einschränkungen
-10¹⁸ ≤ n ≤ 10¹⁸
Beispiele
Eingabe:
n = 64
Erwartete Ausgabe:
expected = True
Eingabe:
long long n = 64;
Erwartete Ausgabe:
bool expected = true;
Eingabe:
long n = 64;
Erwartete Ausgabe:
bool expected = true;
Erläuterung
64 = 2⁶.
Eingabe:
n = 12
Erwartete Ausgabe:
expected = False
Eingabe:
long long n = 12;
Erwartete Ausgabe:
bool expected = false;
Eingabe:
long n = 12;
Erwartete Ausgabe:
bool expected = false;
Erläuterung
12 = 4 × 3 hat einen ungeraden Faktor und ist daher keine Zweierpotenz.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Eine Zweierpotenz hat in Binärdarstellung genau ein gesetztes Bit.
Hinweis 2
Prüfe, ob die Zahl positiv ist, bevor du einen bitbasierten Test verwendest.
Hinweis 3
Negative Zahlen und null sind nie Zweierpotenzen.
Erwartete Komplexität
Zeit O(1), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.