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

Beitrag lesen

Hallo,

Zweierpotenzen haben ja die Eigenschaft, in Binärdarstellung genau eine 1 aufzuweisen (das höchste Bit).

Es sei m die in PHP größtmögliche Zahl, die in Binärdarstellung nur Einsen aufweist, welche das auch immer sein mag ;-), also Binärzahl wie 11111111...

Dann liefert IMHO der Vergleich

~(n^m) == n

true, falls n eine Zweierpotenz ist, andernfalls false.

Gruß, Don P