In Java un'operazione bit a bit causa il cast di tipo a numero intero e causa anche l'estensione del segno. Per esempio si prevede la seguente:In Java, perché digita il casting di un carattere in un intero NON estende il bit di segno
byte b = -1;
System.out.println(b >> 1);//-1
In caratteri Java sono codificati in UTF-16 e ciascuna unità è rappresentato con 2 byte.
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
mi aspettavo -1 invece di 32767. Perché è il segno non esteso durante il lancio di tipo prima dell'operazione bit a bit viene applicata? Qualche idea?
Non voglio essere schizzinoso ma '0xFFFF' è 65535 – jeha
@jeha: grazie, risolto –