Datentypen Unklarheit bei Typecast / arithm. Überlauf

D

david.e

Gast
Hallo,

angenommen ich habe einer Variable vom Typ int den Wert -135 zugewiesen;
und schreibe diesen nun mittels typecast in eine zweite Variable des Typs byte.

Java:
int number = -135;
byte result = (byte) number;
Wenn ich result dann ausgebe, erhalte ich +121.
Nun ist mir nicht wirklich klar, weshalb das so ist.

Wie ich das verstanden habe, werden bei einem typecast von int zu byte,
die letzten acht Stellen der Dualdarstellung des int genommen:

Für -135 (1000 0000 1000 0111) nehme ich also die letzten 8 stellen:
Daraus folgt für result: 1000 0111 (was einer -121 entspricht).

Wieso erhalte ich als Ausgabe +121?
An sich sollten doch 135 und -135 nach einem typecast auf byte, den selben Wert liefern?
Für diesen sollte doch das Vorzeichen keine Rolle spielen, da nur die letzen 8 stellen
verwendet werden?

Da ich jetzt schon einige Zeit darüber nachdenke, und ich immer noch keine Idee habe,
wo hier mein Denkfehler liegt; wollte ich einfach mal hier fragen, ob mir jemand dazu
einen Hinweis geben könnte.

Vielen Dank,
David
 

eRaaaa

Top Contributor
Für -135 (1000 0000 1000 0111) = falsch!

Java:
		System.out.println(Integer.toBinaryString(-135)); //11111111111111111111111101111001
		System.out.println(Integer.parseInt("1111001", 2)); // 121
 

Ähnliche Java Themen

Neue Themen


Oben