C#のBitArrayで特定位置のビット値を取得・設定する方法
BitArrayクラスは、ビット値(true/false)を効率的に管理できるコレクションです。特定の位置にあるビットの値を取得するにはGet()メソッドを使用し、値を設定するにはインデクサー(arr[i])やSet()メソッドを使用します。
ここでは、実際のサンプルコードと実行結果をもとに、具体的な使い方を解説します。
例1:BitArrayのビット値を取得する
次のサンプルコードでは、2つのBitArrayを作成し、Get(0)メソッドで最初の要素(インデックス0)の値を取得しています。
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("BitArray1 length = "+arr1.Length);
Console.WriteLine("BitArray1 first element = "+arr1.Get(0));
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("\nBitArray2 length = "+arr2.Length);
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2){
Console.WriteLine(res);
}
Console.WriteLine("\nIs BitArray1 equal to BitArray2? = "+arr2.Equals(arr1));
}
}
出力結果
BitArray1 length = 2 BitArray1 first element = False BitArray2 length = 2 Elements in BitArray2... False True Is BitArray1 equal to BitArray2? = False
例2:ビット値を更新してから再度取得する
続いて、一度設定したビットの値を変更した後に、改めてGet()メソッドで値を取得する例を見てみましょう。arr1[0] = true;によって値を更新すると、取得結果も新しい値に変わることが確認できます。
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("BitArray1 length = "+arr1.Length);
Console.WriteLine("BitArray1 first element = "+arr1.Get(0));
arr1[0] = true;
Console.WriteLine("BitArray1 first element [UPDATED] = "+arr1.Get(0));
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("\nBitArray2 length = "+arr2.Length);
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2){
Console.WriteLine(res);
}
Console.WriteLine("\nIs BitArray1 equal to BitArray2? = "+arr2.Equals(arr1));
}
}
出力結果
BitArray1 length = 2 BitArray1 first element = False BitArray1 first element [UPDATED] = True BitArray2 length = 2 Elements in BitArray2... False True Is BitArray1 equal to BitArray2? = False
ポイント解説
- Get(int index):指定したインデックス位置のビット値をbool型で返します。
- インデクサー(arr[i]):ビット値の読み取りと書き込みの両方に使える便利な構文です。
- Lengthプロパティ:BitArrayに含まれる要素数を取得します。
- Equals()メソッド:オブジェクト同士が等しいかどうかを判定します。中身が同じでも別インスタンスの場合はfalseを返す点に注意しましょう。
-
C#のBackgroundWorkerクラスとは?主なプロパティと使い方を解説
BackgroundWorkerクラスとはその名の通り、BackgroundWorkerクラスを使用すると、バックグラウンドで継続的に実行されるスレッドを設定し、必要に応じてメインスレッドと通信することができます。BackgroundWorkerを活用することで、Windows Formsアプリケーションにおけるマルチスレッド処理の実装が格段に容易になります。時間のかかる重い処理は別のスレッド上で実行することで、UI(ユーザーインターフェース)がフリーズするのを防ぐことができます。さらに、処理の進行状況や完了をメインスレッドへ通知し、画面を更新することも可能です。BackgroundWorke
-
Python Pandas – 特定の位置に新しいインデックス値を挿入する方法
Pandasでインデックスの特定の位置に新しい値を挿入するには、index.insert()メソッドを使用します。このメソッドを使うと、既存のインデックスを壊すことなく、任意の場所に新しいラベルを追加できます。 insert()メソッドの基本 まず、必要なライブラリをインポートします。 import pandas as pd Pandasのインデックスを作成します。 index = pd.Index([Car,Bike,Airplane,Ship,Truck]) 作成したインデックスを表示して確認しましょう。 print(Pandas Index...\n,index) 特定の位置への挿入手順