ビットセットで表されるビット数を取得するにはどうすればよいですか?
質問
次のコードを実行した場合:
BitSet test = new BitSet(20);
System.out.println("Bitset size is " + test.size());
System.out.println("Bitset length is " + test.length());
出力を取得します:
Bitset size is 64
Bitset length is 0
私が近づいているので、これは理にかなっています ドキュメンテーション (前者は、実装のオーバーヘッドを含むサイズを取得し、後者は最後のセットビットであり、すべてデフォルトはfalseになります)が、私が望むものではありません。
私が実際に使用するビットセットはさまざまな長さを持つことができるので、表されるビットの数を取り戻すことができることを望んでいます(それらが設定されているかどうかを無視します)。それを行う方法はありますか(できれば組み込まれた方法で)?
すべてのビットをひっくり返して長さを実行したり、ビットセットをインスタンス化するために使用している変数を追跡したりすることで、両方とも私の理由でいくつかのコメントが必要であると感じています。 - 文書化。
解決
ビットセットは、その中で最高のビットセットを表すのに十分なサイズに自動的に拡張されます。初期サイズは、使用するビットの数に関するヒントです。ですから、提起されたあなたの質問は意味がありません。
他のヒント
Macでいくつかのテストを行い、ビットセットの長さは64の倍数になりたいと思われます。したがって、ビットセットサイズ20の場合、デフォルトは64になりました。サイズを65に設定すると、長さが表示されるはずです128. 129に設定すると、192が得られます。これにより、「真の」ビットセットの長さを計算する方法が得られます。
ビットセットは内部的に長い(64ビット)を使用します。そのため、Size()メソッドを使用して、この倍数に必要なビット数を決定できます。
所属していません StackOverflow