Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Java: Zweierpotenz prüfen und finden?

Wie ist es möglich zu prüfen, ob eine gegebene Zahl eine Zweierpotenz ist? Also 2, 4, 8, 16 etc!

Und wie ist es möglich mit Java die nächste Zweierpotenz einer Zahl zu finden. Also zu 31 sollte 32 ausgeben werden, zu 924 1024 etc! Danke für eure Antworten!

Update:

"Du suchst das höchste 1er Bit, setzt das nächsthöhere und löscht alle anderen."

Da hab ich noch Probleme damit.. Weiß nicht genau wie ich das anstellen sollte?!

Update 2:

ok.. kam doch drauf! Danke

1 Antwort

Bewertung
  • vor 1 Jahrzehnt
    Beste Antwort

    Generell musst Du bei einer Integer Zahl nur in Bitdarstellung die Einsen zählen. Wenn Du genau eine 1 zählst, ist es eine 'Zweierpotenz'.

    Und, die nächste Zweierpotenz zu finden, ist auch nicht so schwierig. Du suchst das höchste 1er Bit, setzt das nächsthöhere und löscht alle anderen.

    Wie man das genau in Java macht:

    Das Zählen der Bits macht: java.lang.Integer.bitCount(int i)

    Außerdem bietet java.lang.Integer die static Methode highestOneBit(int i).

    Wenn also bitCount mehr als 1 ausgibt, gibst Du (highestOneBit()+1)^2 aus.

Haben Sie noch Fragen? Jetzt beantworten lassen.