# Eine Zahl in Binärdarstellung ausgeben



## Lestas89 (16. Mrz 2016)

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:


```
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


----------



## Joose (16. Mrz 2016)

Lestas89 hat gesagt.:


> 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.



Lestas89 hat gesagt.:


> 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.


----------



## Lestas89 (16. Mrz 2016)

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!


----------



## Joose (16. Mrz 2016)

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.


----------



## Lestas89 (16. Mrz 2016)

Danke dir für deine Antwort. Welche andere (vielleicht etwas einfachere) Möglichkeit zur binären Darstellung gäbe es noch?


----------



## Joose (16. Mrz 2016)

Die Modulo Methode zum Beispiel: https://de.wikipedia.org/wiki/Dualsystem#Vom_Dezimalsystem_ins_Dualsystem


----------



## Lestas89 (16. Mrz 2016)

Danke!


----------



## Schesam (16. Mrz 2016)

Oder einfach 

```
Integer.toBinaryString(int i);
```


----------



## Lestas89 (16. Mrz 2016)

Vielen Dank Schesam.


----------



## Xyz1 (16. Mrz 2016)

Daran sollte Lestas es erkennen:

```
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...


----------



## Lestas89 (16. Mrz 2016)

Das sieht sehr kompliziert aus. Kannst du mir kurz und knackig erklären was in der Methode last3digits passiert :O ?


----------



## pkelod (17. Nov 2022)

,


----------



## pkelod (17. Nov 2022)

Lestas89 hat gesagt.:


> 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 <<.
> ...


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?


----------



## yfons123 (17. Nov 2022)

mach einen neuen thread, du musst nicht bei jahre alten threads was dran hängen


<<3 schiebt die bits um drei nach links


----------

