ここにコードがあります:
byte c = (byte) (0b10101010);
byte d = (byte) (c >> 1);
System.out.println(d);
結果は -85 です。(右シフト操作を行う前に、バイト c が自動的に int に拡張されるため、その理由はわかっています (上位 3 バイトはすべて 1 を構成します))
ここに別のコードがあります:
byte c = (byte) (0b10101010 >> 1);
System.out.println(c );
結果は 85 です。私の質問は、右シフト操作を行う前に、なぜバイナリ コード (0b10101010 が int (ff, ff, ff, 0b10101010) に拡張されないのか)