9
public class Test1 {

    public static void main(String[] args) {

        byte b1=40;
        byte b=(byte) 128;

        System.out.println(b1);
        System.out.println(b);
    }
}

出力は

40
-128

最初の出力は 40 とわかりましたが、2 番目の出力は -128 です。範囲を超えているため可能ですか?はいの場合、バイトキャスト後にどのように機能するか...助けてください

4

2 に答える 2

12

128 (10000000バイナリ) を 8 ビットbyte型にキャストすると、符号ビットが に設定される1ため、数値は負として解釈されます。Java は2 の補数表現を使用するため、8 ビットで表現可能な最小の負の数です10000000-128

この解釈では、 に129なる-127、 に130なる-126など、255(バイナリで)に11111111なる-1

于 2013-09-12T02:13:13.113 に答える