Java short und char binär dargestellt?
Hallo,
wir hatten folgende Klausuraufgabe:
Wie sieht der Bildschirmausdruck
short x;
char c;
System.out.println("x: "+x);
System.out.println("c: "+c);
aus, wenn die Variablen im Speicher auf folgende binäre Werte gesetzt sind:
x: 1011 0000 1110 1010
c: 0000 0000 0101 1001
Meine herangehensweise wäre für den Char C
0101 1001b -> 59h -> 'Y' (ASCII)
Für den short Wert x ist mir allerdings nicht ganz klar wie das funktioniert. Kann mir hier zufällig jemand helfen?
2 Antworten
Hallo,
Short ist eine ganzzahlige Variable 2 Byte -32768 bis +32768
das erste bit ist vorzeichen, der Rest der Wert also ist die Zahl maximal 2^15
das gesetzte Vorzeichenbit ist -
der Wert ist also -12522, das wird als x ausgegeben
Short hält aber noch eine Tücke bereit, bitte hier nachlesen
Javabeginners - Numerische Datentypen
LG
Harry
Dein Ergebnis für c stimmt schonmal. Für x weiß ich nicht, ob du das per Hand umrechnen sollst oder ob du dafür auch Java benutzen darfst.
In Java gibt es die ByteBuffer Objekte, mit denen du direkt auf den Speicher schreiben kannst und in die primitiven Typen umwandeln kannst:
byte[] xBytes = {(byte) 0b1011_0000, (byte) 0b1110_1010};
byte[] cBytes = {(byte) 0b0000_0000, (byte) 0b0101_1001};
short x = ByteBuffer.wrap(xBytes).getShort();
char c = ByteBuffer.wrap(cBytes).getChar();
System.out.println("x: " + x + " c: " + c);
Für x kommt -20246 raus.