阿神2017-04-18 10:12:02
は Java の自動変換によって発生します。原理は次のとおりです。
1. 128 は 32 ビットの整数で、最初の 24 桁はすべて 0、最後の 8 桁は 1000 0000< です。 🎜>
2。バイトに変換された後の (byte)128 の最初のビットは 1 であり、Java はこれを負の数
3 の補数識別子と見なします。 System.out.println が呼び出されると、Java 型システムが自動的にバイトを変換します。このとき、符号付き左シフト演算が実行され、最初の 24 ビットはすべて 1、最後の 8 ビットは 1000 になります。 0000、これはまだ -128.4 であるため、出力は -128
となります。
怪我咯2017-04-18 10:12:02
128
は型 int
00000000 00000000 00000000 10000000
の整数、長さは 32
ビット
byte
型の整数の長さは 8
ビットなので、キャスト後の最後の 8
ビットは 10000000
の最初のビットは左から右に符号ビットです。0
の値は 0
~127
、1
の値は -128
~-1
が System.out.println(int)
を呼び出すと、Java は byte -128
を int -128
それで (byte) 128 == (int) -128