Binärzahl gruppieren

Tetr4

Mitglied
Hallo zusammen,

ich stehe vor folgendem Problem, dass ich irgendwie nicht gelöst bekomme:

Angenommen ihr habt folgende Binärzahl:

10010

Zielsetzung ist es nun, die Einser und die Nuller gruppiert voneinander zu trennen.
Bei obigem Beispiel soll diese Lösung rauskommen:

1 00 1 0

Bei der Binärzahl 11001 sieht die Lösung wie folgt aus:

11 00 1

Aktuell fehlt mir irgendwie jegliche Idee.
Mein erster Ansatz war, die Binärzahl zum String zu wandeln und dann mittles for-Loop und .charAt(i) die einzelnen Stellen durchzulaufen.
Nur wie gebe ich dem Programm auf diese Art und Weise mit, wann ein Zustandsübergang folgt?

Pseudocode oder eine grundsätzliche Umsetzungsidee würden mir für den Anfang vollkommen ausreichen :)

Vorab vielen Dank.
 

mihe7

Top Contributor
Nimm mal ein Blatt Papier, schreib die Binärzahl drauf, nimm ein zweites Blatt Papier, mit dem Du die Zahl abdeckst. Dann deckst Du Ziffer für Ziffer von links nach rechts auf und überlegst Dir, wann eine Gruppe gebildet wird...
 

RennesVin

Mitglied
Hier wäre mal mein Vorschlag:

Java:
public class NumberInspector {
    private static boolean alternatesAt(int num, int at) {
        return ((num >> at) & 1) != ((num >> at + 1) & 1);
    }

    public static String getFormattedString(int num) {
        final int bits = 32;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < bits - 1; i++) {
            builder.append((num >> i) & 1);
            if (num >> i + 1 == 0) {
                // Optional: uncomment for full length...
                break;
            }
            if (alternatesAt(num, i)) {
                builder.append(' ');
            }
            if (i == bits - 2) {
                builder.append((num >> i + 1) & 1);
            }
        }
        return builder.reverse().toString();
    }

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(18));
        System.out.println(Integer.toBinaryString(31));
        System.out.println(Integer.toBinaryString(-1));
        System.out.println(Integer.toBinaryString(-2));
        System.out.println(Integer.toBinaryString(Integer.MAX_VALUE / 3));
        System.out.println(Integer.toBinaryString(0));

        System.out.println();

        System.out.println(getFormattedString(18));
        System.out.println(getFormattedString(31));
        System.out.println(getFormattedString(-1));
        System.out.println(getFormattedString(-2));
        System.out.println(getFormattedString(Integer.MAX_VALUE / 3));
        System.out.println(getFormattedString(0));
    }
}

Kann jeder selber entscheiden, was schöner is
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
P Zeichenkette mit Binärzahl in Dezimalzahl umrechnen Java Basics - Anfänger-Themen 3
H OOP Dezimalzahl in Binärzahl mit GUI - Problem Java Basics - Anfänger-Themen 14
B Integer als Binärzahl auffassen Java Basics - Anfänger-Themen 11
C Binärzahl vom Typ String in eine Zahl vom Typ Integer umwandeln Java Basics - Anfänger-Themen 4
M String(Binärzahl) in Dezimal umwandeln Java Basics - Anfänger-Themen 4
M normalen Integer in Binärzahl umwandeln Java Basics - Anfänger-Themen 2
G Binärzahl in dezimalzahl umwandeln Java Basics - Anfänger-Themen 5
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
B Gruppieren Java Basics - Anfänger-Themen 9
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
I Gruppieren in der Liste Java Basics - Anfänger-Themen 6
B Datentypen Enum vererben/gruppieren? Java Basics - Anfänger-Themen 6
T Properties Datei gruppieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben