質問
0と1で動作するJavaのBitSet
の良い例を探しています。Javadocを見てみましたが、読んだだけではクラスの使い方がわかりません。たとえば、and
、or
、およびxor
メソッドは、2つの異なるBitSet
オブジェクトでどのように機能しますか?
例: ジェネラコディセタグプレ
これを行うと、bits2
が空として返されます。なぜですか?
解決
あなたが言及した特定の問題について:bits2.set(1000001)
を呼び出すとき、100万番目の最初のビットをtrueに設定しました。次に、100万、11万1000、111番目のビットが設定されたbits1
と交差したとき、それらには共通のビットがありませんでした。
あなたが意味することはだったと思います ジェネラコディセタグプレ
これは問題を解決するのに役立ちますか?
他のヒント
ビットを操作する場合は、Java7でint
値を使用できます。
ジェネラコディセタグプレ
プリント ジェネラコディセタグプレ
BitSetには、そのようなビットの文字列を受け入れるための便利なメソッドがありません。以下にいくつか提供しましたが、この例は期待どおりに機能します。これはJava7の新機能を使用していることに注意してください。Java 6を使用したい場合は、これらのメソッドの実装をオンラインで簡単に見つけることができます。 ジェネラコディセタグプレ
ここにあなたを助けるbitSetに関するいくつかのリンクがあります:
- http://www.java-samples.com/showtutorial.php?tutorialid=378
- http://www.codeguru.com/java/tij/tij0090.shtml
- http://imagenious.wordpress.com/2008/02/05/ java-bitset-vs-primitive /
更新:
ドキュメントでは、次のように述べられています:
public void set(int bitIndex) ジェネラコディセタグプレ
したがって、
bits2.set(10);
を呼び出すと、 10 ではなく 10進数と見なされるため、次の番号の1000000000
が得られます。正しく設定するために、この例では2番目のビットを1に設定したいので、インデックスが 0 で始まるため、
bits2.set(1);
を呼び出します。結論では、1に設定されたすべてのビットについて、bitSet.Setを呼び出し、ビットのインデックスを提供する必要があります。
ビットの文字列を入力として使用してBitSetオブジェクトを作成するための実装を共有しています。 ジェネラコディセタグプレ
文字列入力「1001」の場合 ジェネラコディセタグプレ
出力: ジェネラコディセタグプレ
これを試してください: ジェネラコディセタグプレ
これがお役に立てば幸いです。詳細については、 https:// githubにアクセスしてください。com / m-vahidalizadeh / Foundations / blob / master / src / data_structures / BitSetExample.java 。