C#のBitArrayでビットごとのOR演算を実装する方法
C#のBitArrayクラスでは、Or()メソッドを使うことで、2つのBitArrayの対応する要素同士に対してビットごとのOR演算を実行できます。この記事では、その具体的な実装方法をサンプルコードと実行結果とともに解説します。
ビットごとのOR演算とは
ビットごとのOR演算は、2つのブール値(またはビット)を比較する論理演算で、「どちらか一方でも true であれば結果は true」となります。BitArray.Or() メソッドは、呼び出し元のBitArrayと引数として渡したBitArrayの各要素をインデックスごとに比較し、その結果を含むコレクションを返します。
サンプルコード
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 の要素...");
foreach (bool res in arr1) {
Console.WriteLine(res);
}
Console.WriteLine("\nBitArray2 の要素...");
foreach (bool res in arr2) {
Console.WriteLine(res);
}
Console.WriteLine("\nビットごとのOR演算の結果...");
IEnumerable demoEnum = arr1.Or(arr2);
foreach (Object ob in demoEnum) {
Console.WriteLine(ob);
}
}
}
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
BitArray1 の要素... False False False False False BitArray2 の要素... False True False False False ビットごとのOR演算の結果... False True False False False
コードの解説
このプログラムでは、まず要素数5の2つのBitArray(arr1 と arr2)を作成しています。BitArrayの初期値はすべて false であるため、明示的に設定していない要素も false になります。ここでは arr2[1] のみ true を設定しています。
arr1.Or(arr2) を呼び出すと、同じインデックス位置の要素同士でOR演算が行われます。OR演算の性質上、両方が false の場合のみ結果が false になり、どちらか一方でも true なら結果は true になります。そのため、出力ではインデックス1の位置だけ True となり、それ以外はすべて False になっています。
-
C#のBitArrayクラスとは?主なプロパティとIsReadOnlyの使い方を解説
BitArrayクラスは、ビット(bit)を格納したいものの、必要なビット数が事前にわからない場合に活用できるコレクションクラスです。System.Collections名前空間に属しており、ビット単位でのデータ管理を効率的に行えます。 BitArrayクラスの主なプロパティ C#のBitArrayクラスには、以下のような便利なプロパティが用意されています。 番号プロパティと説明 1CountBitArrayに含まれている要素の数を取得します。 2IsReadOnlyBitArrayが読み取り専用かどうかを示す値を取得します。 3ItemBitArray内の指定した位置にあるビットの値
-
Pythonのタプルと辞書(dict)の違いとは?特徴と使い分けをわかりやすく解説
Pythonにはさまざまなデータ構造が用意されていますが、その中でもよく使われるのが「タプル(tuple)」と「辞書(dict)」です。一見どちらも複数のデータをまとめて扱える点で似ていますが、実際にはまったく異なる性質を持つデータ構造です。この記事では、それぞれの特徴と違いをわかりやすく解説します。 タプル(tuple)の特徴 タプルは、複数の要素を順序付きで格納できるデータ構造です。主な特徴は以下のとおりです。 順序が保持される:要素を追加した順番がそのまま維持されます。 イミュータブル(変更不可):一度作成したタプルの要素は、後から追加・削除・変更できません。 任意の型を格納可能:数値