2011-12-03 5 views
0

私は次のコードを実行した場合:BitSetで表されるビット数を取得するにはどうすればよいですか?

Bitset size is 64 
Bitset length is 0 

今私は、実装のオーバーヘッドを含むdocumentation(旧なっサイズでよく見るという意味があります:

BitSet test = new BitSet(20); 
System.out.println("Bitset size is " + test.size()); 
System.out.println("Bitset length is " + test.length()); 

を私は出力を得ます後者は最後に設定されたビットで、デフォルトはすべてfalseに設定されていますが)、私が望むものではありません。

実際に使用するビットセットはさまざまな長さを持つことができるため、表現されているビット数を戻すことができます(設定されているかどうかは無視されます)。それを行う方法はありますか(うまくいけば組み込みの方法で)?

BitSetをインスタンス化するために使用する変数をトラッキングすることで、すべてのビットを反転してみることができますが、私は両方の理由でいくつかの行のコメントが必要なように感じ、何かを望んでいましたもう少し自己文書化する。

答えて

2

ビットセットは、ビットセット内で設定されている最上位ビットを表すのに十分なサイズに自動的に拡張されます。最初のサイズは、使用するビット数についてのヒントです。ですから、あなたの質問は妥当ではありません。

+0

ああ、私はそれがうまくいかなかったと誤解しました。何とか私は必要に応じて成長についてのドキュメントの最初の行を逃した...ありがとう。 – thegrinner

0

ビセットは内部でlong(64ビット)を使用します。 size()メソッドを使用して、必要なビット数をこの倍数で決めることができます。

1

私はMacでいくつかのテストを行いましたが、BitSetの長さは64の倍数になりたいと思われます。したがって、BitSetのサイズが20の場合、デフォルトは64になります。サイズを65に設定すると、 128の長さが表示されます。129に設定すると192になるはずです。これにより、 '真の' BitSetの長さを計算する方法が得られます。