Wie erhalte ich die nächste Zweierpotenz einer gegebenen Zahl? [Duplikat]

7

Wie erhalte ich die nächste Zweierpotenz einer gegebenen Zahl?

Beispielsweise erhalte ich die Nummer 138, die nächste POT-Nummer ist 256.

Ich empfange die Nummer 112, der nächste POT ist 128.

Ich muss einen Algorithmus machen, der das berechnet

Danke

    
NullPointerException 07.10.2011, 10:11
quelle

3 Antworten

15

Ein wirklich schlauer Programmierer würde sich die Methode java.lang.Integer.highestOneBit(int) ansehen und den Linksverschiebungsoperator ( << ) betrachten.

    
Jeff Grigg 08.10.2011, 00:47
quelle
6

Hier ist ein sehr einfacher Algorithmus (da dies Hausaufgaben sind, müssen Sie es selbst programmieren):

  1. Beginnen Sie mit 1 als erste mögliche Potenz von Zwei.
  2. Verschieben Sie die Kandidatennummer um ein Bit nach links, bis sie größer oder gleich der Zielnummer ist.
NPE 07.10.2011 10:20
quelle
5

Wenn angenommen wird, dass die Eingabe eine positive ganze Zahl ist, wäre eine unkonventionelle Lösung, das Bitmuster der Zahl zu betrachten. Finde die erste "1" von links und denke dann über den Wert des Bits links davon nach.

    
S.L. Barth 07.10.2011 10:17
quelle