3

//わかりました

Byte b = (byte)207;
System.out.println(b); //value = 207

//わかりません意味がありません

Integer x = Integer.parseInt("11001111", 2); //207
Byte sens = (byte)x.intValue(); //207
System.out.println(sens); //Value = -49
System.out.println(sens.intValue()); //Value = -49

何が起きてる?

127より大きい値の8ビットバイトを宣言/表現するにはどうすればよいですか?

4

4 に答える 4

9

Javaのバイトは符号付きであるため、-128から127になります。そのようなintをキャストすると、1の上位ビット(2の補数の符号付き数値に負の数を示す)が取得され、負の数-49に変換されます。

そこからsens.intValue()、それをで整数に戻すと、新しい負の値を取得して返すため、-49が得られます。

int残念ながら、128より大きいバイトをデータ型に格納する必要があります。

于 2013-01-07T22:07:45.860 に答える
1

Javaのバイトは署名されているため、127より大きい値をバイトで表すことはできません。

あなたの例では:

Byte b = (byte)207;
System.out.println(b); //value = 207

エラーがあります。printlnの出力は-49です。

Byte b = (byte)207;
System.out.println(b); //value = -49

これは、両方のケースが同一であることを意味します。

于 2013-01-07T23:29:31.207 に答える
0

正の 127 を超えることはできないが、負の 128 を超えることはできる理由は、バイトの 8 桁のうち最初の 1 が負の数か正の数かを表すためです。

1 = ネガティブ

0 = 正

負の数には「1111 1111」を使用できるため、-127 を取得できます。

于 2016-02-16T20:05:18.310 に答える