C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のBitArrayクラスとは?主要メソッドと実用例をわかりやすく解説

BitArrayクラスとは

C#のBitArrayクラスは、ビット値をコンパクトに格納できる配列を管理するためのコレクションクラスです。System.Collections名前空間に属しており、各ビットはbool値として表現されます。
trueはビットがオン(1)であることを、falseはビットがオフ(0)であることを意味します。

通常のbool配列では1要素につき1バイト以上のメモリを消費しますが、BitArrayを使えば1ビット単位でデータを保持できるため、大量の真偽値を扱う場合にメモリ効率が大幅に向上します。フラグ管理やフィルタ処理などに活用できます。

BitArrayクラスの主なメソッド一覧

以下の表に、BitArrayクラスでよく使われる主要メソッドをまとめます。

No.メソッドと説明
1public BitArray And(BitArray value);
現在のBitArrayの要素と、指定されたBitArrayの対応する要素との間で、ビットごとのAND演算を実行します。
2public bool Get(int index);
BitArray内の指定した位置にあるビットの値を取得します。
3public BitArray Not();
現在のBitArray内のすべてのビット値を反転します。trueはfalseへ、falseはtrueへ変更されます。
4public BitArray Or(BitArray value);
現在のBitArrayの要素と、指定されたBitArrayの対応する要素との間で、ビットごとのOR演算を実行します。
5public void Set(int index, bool value);
BitArray内の指定した位置のビットに、指定した値を設定します。
6public void SetAll(bool value);
BitArray内のすべてのビットに、指定した値を一括して設定します。
7public BitArray Xor(BitArray value);
現在のBitArrayの要素と、指定されたBitArrayの対応する要素との間で、ビットごとの排他的OR(XOR)演算を実行します。

基本的な使用例

まずは、BitArrayの基本操作を見てみましょう。

using System;
using System.Collections;
public class Demo {
   public static void Main(){
      BitArray arr1 = new BitArray(2);
      BitArray arr2 = new BitArray(2);
      arr1[0] = false;
      arr1[1] = true;
      Console.WriteLine("Elements in BitArray1...");
      foreach (bool res in arr1){
         Console.WriteLine(res);
      }
      arr2[0] = false;
      arr2[1] = true;
      Console.WriteLine("Elements in BitArray2...");
      foreach (bool res in arr2){
         Console.WriteLine(res);
      }
      Console.WriteLine("Is BitArray1 equal to BitArray2? = "+arr2.Equals(arr1));
      Console.WriteLine("Is BitArray synchronized? = "+arr2.IsSynchronized);
      Console.WriteLine("Is BitArray read-only? = "+arr2.IsReadOnly);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Elements in BitArray1...
False
True
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False
Is BitArray synchronized? = False
Is BitArray read-only? = False

XOR(排他的論理和)演算の例

次に、BitArrayの要素同士で排他的OR(XOR)演算を行う例を紹介します。

using System;
using System.Collections;
public class Demo {
   public static void Main(){
      BitArray arr1 = new BitArray(5);
      BitArray arr2 = new BitArray(5);
      arr1[0] = false;
      arr1[1] = false;
      arr2[0] = false;
      arr2[1] = true;
      Console.WriteLine("BitArray1 elements...");
      foreach (bool res in arr1){
         Console.WriteLine(res);
      }
      Console.WriteLine("\nBitArray2 elements...");
      foreach (bool res in arr2){
         Console.WriteLine(res);
      }
      Console.WriteLine("\nBitwise exclusive OR operation...");
      IEnumerable demoEnum = arr1.Xor(arr2);
      foreach(Object ob in demoEnum){
         Console.WriteLine(ob);
      }
   }
}

出力結果

このコードを実行すると、以下の出力が得られます。

BitArray1 elements...
False
False
False
False
False

BitArray2 elements...
False
True
False
False
False

Bitwise exclusive OR operation...
False
True
False
False
False

まとめ

BitArrayクラスを使うことで、ビット単位のデータをメモリ効率よく管理でき、And・Or・Not・Xorといったビット演算もメソッド呼び出しだけで簡単に行えます。フラグの集合管理やビットマスク処理などが必要な場面で、ぜひ活用してみてください。

  1. C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説

    C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System

  2. C#のクラスとは?基本構文からサンプルコードまで徹底解説

    C#におけるクラスとは、データ型の「設計図(ブループリント)」に相当するものです。クラスをもとに生成された実体をオブジェクトと呼び、オブジェクトはクラスのインスタンスであるといえます。また、クラスを構成するメソッドや変数は、まとめてクラスのメンバーと呼ばれます。クラスの一般的な定義形式C#でクラスを定義する際の一般的な書式は以下のとおりです。<アクセス修飾子> class クラス名 {     // メンバー変数     <アクセス修飾子> <データ型> 変数1;  &