Java では、ビット単位の操作によって型が整数にキャストされ、符号拡張も発生します。たとえば、次のことが予想されます。
byte b = -1;
System.out.println(b >> 1);//-1
Java では、文字は UTF-16 でエンコードされ、各ユニットは 2 バイトで表されます。
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
32767 ではなく -1 を期待していました。ビット演算が適用される前の型キャスト中に符号が拡張されないのはなぜですか? 何か案は?