Warum wird in Java das Casting eines Zeichens in eine Ganzzahl NOT das Zeichen-Bit nicht erweitert?

8

In Java führt eine bitweise Operation zu einem Casting in Ganzzahl und verursacht auch eine Zeichenerweiterung. Zum Beispiel wird folgendes erwartet:

%Vor%

In Java werden Zeichen in UTF-16 kodiert und jede Einheit wird mit 2 Bytes dargestellt.

%Vor%

Ich habe -1 statt 32767 erwartet. Warum wird das Zeichen während der Typumwandlung nicht erweitert, bevor die bitweise Operation angewendet wird? Irgendwelche Ideen?

    
CEGRD 17.11.2011, 10:02
quelle

2 Antworten

12

Weil char unsigniert ist - 0xFFFF hat wirklich einen Wert von 65535

    
Michael Borgwardt 17.11.2011, 10:07
quelle
3

Es funktioniert so, weil die Grundelementkonvertierung erweitert wird Dies wird bei Schichtargumenten durchgeführt. Es gibt nämlich keinen Informationsverlust, einschließlich des Vorzeichens des konvertierten Typs.

    
soulcheck 17.11.2011 10:23
quelle

Tags und Links