mike: Wie prüfe ich eine Zahl auf Zweierpotenz (2,4,8,16,...)?

Beitrag lesen

Hallo,

ich will prüfen, ob eine Variable eine Zweierpotenz (2^n) ist, oder nicht...

Wenn nicht, soll er die Zahl zur nächst höheren Zweierpotenz machen.

Ich habe es jetzt erstmal mit dem Logarithmus der Zahl zur Basis 2 versucht, und teste dann, ob das Ergebnis eine ganze Zahl ist.

$zahl = 3;

while(!is_int(log($zahl, 2))) {
 $zahl++;
}
echo $zahl;

Hier ist nur das Problem, dass der log immer ein "float"-Ergebnis zurückgibt, und ich deswegen nicht auf "integer" prüfen kann.

Ich bin dankbar für jeden Tipp, evtl. gibt's ja auch noch ne andere Lösung...

Vielen Dank,

Mike