1

この出力が得られるのはなぜですか?

バイト x ; x = 127; x<<=3;// x = x <<3と同じ println(x)

出力: -8

私がそれを紙に書き留めて、私が得ていたビットをいじったとき - 11111000 そしてそれは = 248ですか?

Byte は 1 バイト (8 ビット) を占めると思います。符号付きか符号なしかわかりませんか?符号付きだと思いますか?

以下の C のコードでも -8 が得られたからです。

署名された文字 x = 127; x<<=3; printf("x の値 = %d \n " , x);

なぜ-8?? rgd ソフティ

4

2 に答える 2

10

これは、 が2 の補数byteを使用する符号付きデータ型であるためです。と等しいです。248-256-8

于 2012-05-09T08:57:33.203 に答える
0

符号付き文字を使用しているため、範囲は-128〜127です。符号付き文字の最上位ビット(MSB)は、符号付き文字に制限されています。正の場合は0、負の場合は1です。

正の場合..値は通常どおりカウントされます。

ただし、負の場合..値はcount [normal_value]-[max_value]です。例:

129 = 10000001[ビット]

したがって、signedの値= 129-256 = -127

CMIIW

于 2012-05-09T09:14:12.257 に答える