4

コードのこの部分は、LittleEndianで10000000、次に128の表現を返す必要がありますが、-128を返します。128はバイナリ表現の-128と同じですが、なぜ128を表現できないのですか?

BitSet bset = new BitSet();
bset.set(7);
byte[] bitarray = bset.toByteArray();
for (byte b: bitarray)
 System.out.println(b);
4

2 に答える 2

5

Javaには符号付き整数型しかないためです。8ビット10000000の最初のビット2バイトは1で、負の数を示します。したがって、byteJavaの型の範囲は<-128です。127>。これをチェックしてください:

byte b = 127;
byte b2 = (byte)(b + 1);  //-128
于 2012-08-29T18:42:59.220 に答える
3

Javaは、署名されたshort / byte / integer/longのみをサポートします。

バイト:バイトデータ型は、8ビットの符号付き2の補数整数です。最小値は-128、最大値は127(両端を含む)です。バイトデータ型は、メモリの節約が実際に重要である大規模な配列でメモリを節約するのに役立ちます。また、制限がコードを明確にするのに役立つintの代わりに使用することもできます。変数の範囲が制限されているという事実は、ドキュメントの形式として役立ちます

于 2012-08-29T18:43:21.047 に答える