e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
C# プログラミングシリーズ
C# のコレクション クラス (1/3)
Yashavant Kanetkar
BitArray クラス
BitArray クラスは bool 値の配列を表します。BitArray の各要素には、true または false が含まれます。BitArray クラスには、引数がゼロのコンストラクタを除く複数のオーバーロードされたコンストラクタがあります。次のステートメントでは、BitArray のオブジェクトをインスタンス化する方法を示します。
int[ ] a = { 1, 2, 3 } ;
BitArray b1 = new BitArray ( a ) ;
BitArray b2 = new BitArray ( 5 ) ;
BitArray b3 = new BitArray ( 5, true ) ;
BitArray コンストラクタの引数として別の配列への参照を渡すと、その配列のすべての要素のビット値が BitArray の要素としてコピーされます。たとえば、要素 1 のビット値 (1 または 0) は、配列 b1 の最初の 32 要素 (1 は 32 ビットの値) になります。ビットが 1 か 0 かに応じて、true または false が b1 に格納されます。配列 b2 は 5 要素で作成され、既定ではすべての要素が false に設定されます。配列 b3 には 5 つの要素が含まれ、すべての要素は bool 値の true に設定されます。次のコードでは、配列 b1 の要素が表示されます。
for ( int i = 0 ; i < b1.Count ; i++ )
Console.WriteLine ( "{0} ", b1 [ i ] ) ;
BitArray クラスには、配列の要素に対してビットごとの演算を実行できる複数のメソッドがあります。Not( )、Or( )、Xor( ) などのメソッドがあります。次のコードスニペットでは、これらのメソッドを使用する方法を示します。
int[ ] a1 = { -10, -10 } ;
int[ ] a2 = { 10, 10 } ;
BitArray b1 = new BitArray ( a1 ) ;
BitArray b2 = new BitArray ( a2 ) ;
b1.And ( b2 ) ;
b1.Or ( b2 ) ;
b1.Xor ( b2 ) ;ビットごとの演算を実行する関数には、ビットごとの演算の実行対象の要素を含むもう 1 つの BitArray が必要です。したがって、int 配列の参照を渡すことで、BitArrays の 2 つのインスタンス b1 と b2 を作成します。b1 の要素と b2 の要素の AND、OR、および XOR 演算を行います。b1 と b2 の作成に使用する配列は要素の数が同じでなければならないことに注意してください。
次に示すように、Set( ) または Setall( ) メソッドを使用して、BitArray の要素の値を変更できます。
b1.Set ( 1, true ) ; b1.SetAll ( true ) ;
Set( ) メソッドは指定した要素を指定した bool 値に設定し、SetAll( ) メソッドはすべての要素を指定した bool 値に設定します。



