3

すべてのビットが 1 に設定されるように、long の Java 配列を埋めたいと思います。対応する long 値は -1または "0xFFFFFFFFFFFFFFFFl" であることがわかりました。

long l = -1L;
System.out.println(Long.toBinaryString(l));

"1111111111111111111111111111111111111111111111111111111111111111"

したがってArrays.fill()、配列を 1 で埋めるために使用します。

final long allBitsOn = -1L;
long[] bits = new long[arrayLength];
Arrays.fill(bits, allBitsOn);

long(-1)この配列は、主要なプロジェクトの基本的なインフラストラクチャです。すべての VM 実装と Java の将来のバージョンで、long が 64 ビットであり、すべてのビットが常に 1 に設定されることを完全に確認したいと考えています。

この仮定は安全ですか?

4

2 に答える 2

4

はい、仮定は安全です。JLSから:

4.2. プリミティブの型と値

整数型はbyteshortint、およびでありlong、その値はそれぞれ 8 ビット、16 ビット、32 ビット、および64 ビットの符号付き 2 の補数整数であり、値は UTF-16 を表す 16 ビットの符号なし整数である char です。コード単位 (§3.1)。

2の補数-1は、 はすべて 1 からなるビット パターンで表されます。

于 2012-11-27T07:23:08.990 に答える
2

この仮定は安全ですか?

はい、Java 言語仕様のセクション 4.2で定義されています。

整数型はbyteshortint、およびlongで、その値はそれぞれ 8 ビット、16 ビット、32 ビット、および 64 ビットの符号付き 2 の補数整数です...

あなたが説明するのは、 2の補数の整数がどのように機能するかです。-1は「すべてのビットがオン」です。

于 2012-11-27T07:22:23.137 に答える