【C#】BitArrayの特定位置にあるビットを指定した値に設定する方法
C#のBitArrayクラスでは、Setメソッドを使うことで、特定のインデックス位置にあるビットを任意の値(true / false)に設定できます。この記事では、実際のコード例と実行結果をもとに、その使い方をわかりやすく解説します。
Setメソッドとは
BitArray.Set(int index, bool value)は、第1引数で指定したインデックス位置のビットを、第2引数で指定したブール値に更新するメソッドです。インデックスは0から始まるため、注意が必要です。
サンプルコード1:単一ビットの設定
まずは、1つのビットだけを変更する基本的な例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr = new BitArray(5);
arr[0] = true;
arr[1] = false;
arr[2] = true;
arr[3] = false;
Console.WriteLine("BitArray...");
foreach(Object ob in arr) {
Console.WriteLine(ob);
}
// インデックス2のビットをfalseに設定
arr.Set(2, false);
Console.WriteLine("\nUpdated BitArray...");
foreach(Object ob in arr) {
Console.WriteLine(ob);
}
}
}実行結果
上記のコードを実行すると、次の出力が得られます。
BitArray... True False True False False Updated BitArray... True False False False False
この例では、初期状態でインデックス2のビットがtrueでしたが、arr.Set(2, false)を実行したことで、更新後のBitArrayではその位置がfalseに変わっていることが確認できます。
サンプルコード2:複数ビットの一括設定
続いて、複数のビットを連続して設定する例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr = new BitArray(5);
arr[0] = true;
arr[1] = false;
arr[2] = true;
arr[3] = false;
Console.WriteLine("BitArray...");
foreach(Object ob in arr) {
Console.WriteLine(ob);
}
// 複数のビットを個別に設定
arr.Set(0, false);
arr.Set(1, true);
arr.Set(2, false);
Console.WriteLine("\nUpdated BitArray...");
foreach(Object ob in arr) {
Console.WriteLine(ob);
}
}
}実行結果
BitArray... True False True False False Updated BitArray... False True False False False
この例では、インデックス0〜2の3つのビットに対してそれぞれ異なる値を設定しています。実行結果から、各ビットが指定した値へと正しく更新されていることがわかります。
まとめ
BitArray.Setメソッドを使えば、指定したインデックス位置のビットを簡単に更新できます。インデックスアクセサ(arr[i])でも同様の操作が可能ですが、Setメソッドは意図が明確で可読性が高いというメリットがあります。ビット単位のフラグ管理やデータ圧縮などの場面で活用してみてください。
-
Pythonで特定の位置のビットがセットされているかどうかを判定する方法
プログラミングにおいて、ある整数 n の特定のビットが 1(セット) なのか 0(未セット) なのかを判定したい場面はよくあります。本記事では、Pythonを使って k番目のビット がセットされているかどうかを効率的に確認する方法を解説します。ここでいう k番目のビットは、最下位ビット(右端)から数えて 何番目かを意味します。 問題の概要 例として、n = 18、k = 2 が入力された場合を考えてみましょう。18を2進数で表すと 10010 となります。右から2番目のビットは 1 であるため、出力は「Set」となります。 解決のアプローチ この問題は、ビット演算(右シフトと論理積)を組み合わ
-
Redis SETBITコマンドの使い方 – 文字列の指定したインデックスにビット値を設定する方法
このチュートリアルでは、Redisデータストアに保存されたキーの文字列値に対して、指定したインデックス(オフセット)位置にビット値を設定する方法を解説します。この操作には、RedisのSETBITコマンドを使用します。 SETBITコマンドとは SETBITコマンドは、キーに格納された文字列値の指定したインデックス位置にビット値(0または1)を設定します。指定したインデックスが現在の文字列の長さを超えている場合、その文字列は0ビットで埋められた連続領域として扱われます。 また、キーが存在しない場合は、まず空の文字列で新しく作成されます。そのため、インデックスは必ず範囲外となり、該当位置には0