Zitat von
grenzgaenger:
du brauchst nur das letzte bit prüfen. ist dieses nicht gesetzt, ist es eine potenz von 2, sonst nicht.
Veto: Was ergibt denn 2^0 ?
Er müsste - binär betrachtet - schauen ob in der Ganzzahl nur ein einzelnes Bit gesetzt ist. Also z.B. die gesamte Zahl nach rechts durchshiften und zählen wie oft das Bit 0 gesetzt ist. Wenn er auf ein zweites mal auf ein gesetztes Bit trifft, kann er aufhören.
Er müsste - mathematisch betrachtet - die Potenz berechnen zu der Basis 2, also: pot = ln(zahl) / ln(2). Wenn diese eine glatte Ganzzahl ergibt, ist es eine direkt 2'er Potenz, ansonsten nicht.
/EDIT: sirius, ja war ich im Edit gerade am ausführen...