Wenn Sie die Binärzahl 10110 haben, wie kann ich 11111 zurückgeben? B. eine neue Binärzahl, die alle Bits nach der ersten 1 auf 1 setzt, gibt es einige ebenfalls unten aufgelistete Beispiele:
101 sollte 111 (3 Bit Länge) zurückgeben 011 sollte 11 zurückgeben (2 Bit Länge) 11100 sollte 11111 zurückgeben (5 Bit Länge) 101010101 sollte 111111111 (9 Bit Länge) zurückgeben
Wie kann dies am einfachsten in Java erreicht werden? Ich könnte mir einige Methoden einfallen lassen, aber sie sind nicht sehr "hübsch".
Sie könnten diesen Code verwenden:
%Vor%Die Idee ist, dass die linke 1 zu allen Positionen auf der rechten Seite kopiert wird.
BEARBEITEN: Funktioniert auch mit einem negativen value
. Wenn Sie int
durch long
ersetzen, fügen Sie eine zusätzliche |=
-Anweisung hinzu: value |= (value >> 32)
. Im Allgemeinen muss die letzte Verschiebung eine Potenz von 2 sein, die mindestens die Hälfte von value
in Bits beträgt.
Tags und Links java binary bit-manipulation int