Eine Zahl in Binärdarstellung ausgeben

Lestas89

Bekanntes Mitglied
Folgende Aufgabenstellung:

Schreiben Sie ein Programm, das eine ganze Zahl vom Typ
int in Binärdarstellung (32 Bit) ausgibt. Benutzen Sie hierzu die Bitoperatoren & und <<.

Tipp: Das Bit mit der Nummer i (Nummerierung beginnt bei 0) in der Binärdarstellung von
zahl hat den Wert 1 genau dann, wenn der Ausdruck zahl & (1 << i) von 0 verschieden ist.

Die Lösung lautet wie folgt:

Java:
public class Bits {
    public static void main(String[] args) {
        int zahl = 4711;

        for (int i = 31; i >= 0; --i) {
            if ((zahl & (1 << i)) != 0)
                System.out.print('1');
            else
                System.out.print('0');
            if (i % 8 == 0)
                System.out.print(' ');
        }

        System.out.println();
    }
}

Ich habe nun zwei Fragen:

Die erste Frage ist: Was genau macht diese Anweisung ? : zahl & (1 << i))
Die zweite Frage ist: Seit wann können Strings in diese Anführungszeichen ' ' gepackt werden? Ich dachte da geht nur " ". Wenn ich System.out.print('0') in einem anderen Programm mache, bekomme ich einen Fehler.

Vielen Dank im Voraus 🙂
 
Die erste Frage ist: Was genau macht diese Anweisung ? : zahl & (1 << i))

'&' ist das bitweise AND, und '<<' verschiebt die Bits (von der Zahl 1) um i nach links.

Die zweite Frage ist: Seit wann können Strings in diese Anführungszeichen ' ' gepackt werden? Ich dachte da geht nur " ". Wenn ich System.out.print('0') in einem anderen Programm mache, bekomme ich einen Fehler.
Welchen Fehler denn?
Dabei handelt es sich nicht um einen String sondern ein 'char', primitiver Datentyp um ein einzelnes Zeichen darzustellen.
 
Hallo Joose,

die zweite Frage hat sich erübrigt, da hatte ich einen Fehler gemacht. Kannst du mir vielleicht etwas näher erläutern, wieso ich bei dieser Aufgabenstellung den Ansatz zahl & (1 << i)) benötige?

Vielen Dank im Voraus!
 
Es gibt mehrere Möglichkeiten um ein "int" in die binäre Darstellungsforum umzuwandeln.
Diese hier funktioniert halt mit "bit" Operationen. Andere verwenden einfach Grundrechnungsarten.
 
Daran sollte Lestas es erkennen:
Java:
    private static void last3digits(long l) {
        System.out.print((l >>> 2) & 1);
        System.out.print((l >>> 1) & 1);
        System.out.print((l >>> 0) & 1);

        System.out.println("");

        System.out.print(l / 2 / 2 % 2);
        System.out.print(l / 2 % 2);
        System.out.print(l / 1 % 2);

        System.out.println("");
        System.out.println("");
    }

    public static void main(String[] args) {
        last3digits(0);
        last3digits(1);
        last3digits(2);
        last3digits(3);
        last3digits(4);
        last3digits(5);
        last3digits(6);
        last3digits(7);
    }

Zeile 4: Pointless bitwise expression

normalerweise dreht man den String einfach um...
 
Folgende Aufgabenstellung:

Schreiben Sie ein Programm, das eine ganze Zahl vom Typ
int in Binärdarstellung (32 Bit) ausgibt. Benutzen Sie hierzu die Bitoperatoren & und <<.

Tipp: Das Bit mit der Nummer i (Nummerierung beginnt bei 0) in der Binärdarstellung von
zahl hat den Wert 1 genau dann, wenn der Ausdruck zahl & (1 << i) von 0 verschieden ist.

Die Lösung lautet wie folgt:

Java:
public class Bits {
    public static void main(String[] args) {
        int zahl = 4711;

        for (int i = 31; i >= 0; --i) {
            if ((zahl & (1 << i)) != 0)
                System.out.print('1');
            else
                System.out.print('0');
            if (i % 8 == 0)
                System.out.print(' ');
        }

        System.out.println();
    }
}

Ich habe nun zwei Fragen:

Die erste Frage ist: Was genau macht diese Anweisung ? : zahl & (1 << i))
Die zweite Frage ist: Seit wann können Strings in diese Anführungszeichen ' ' gepackt werden? Ich dachte da geht nur " ". Wenn ich System.out.print('0') in einem anderen Programm mache, bekomme ich einen Fehler.

Vielen Dank im Voraus 🙂
Ich möchte das gleiche code aber mit >> und | , verstehe eigentlich das ganze nicht. Was macht die Operatoren >> und <<. Geben sie die Binäredarstellung von der Nummer und dann verschiebt das?
 
mach einen neuen thread, du musst nicht bei jahre alten threads was dran hängen


<<3 schiebt die bits um drei nach links
 

Zurück
Oben