なんだかGoodVibes

日々の勉強メモです。

【C#】BitArrayメモ

こんにちは。
本日は、BitArrayのメモです。
オン→true、オフ→false
のブール型の配列となっています。


概要

各サンプルにて、BitArrayの内容を表示するのに以下を使用してます。

private void ConsoleBitArray(BitArray bArr, string text)
{
    Console.Write($"\n{text}");
    foreach (var bit in bArr)
    {
        Console.Write($"{bit}, ");
    }
}


初期化

var bArr = new BitArray(8);
ConsoleBitArray(bArr, "bArr = ");


結果は以下。

bArr = False, False, False, False, False, False, False, False, 

初期化をした場合は、すべての要素がfalseとなっています。


指定した値で作成

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);
ConsoleBitArray(bArr, "bArr = ");


結果は以下。

bArr = False, False, False, False, True, True, True, True, 


左シフト[LeftShift]

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);
ConsoleBitArray(bArr.LeftShift(3), "bArr.LeftShift(3) = ");


結果は以下。

bArr.LeftShift(3) = False, False, False, False, False, False, False, True, 


右シフト[RightShift]

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);
ConsoleBitArray(bArr.RightShift(3), "bArr.RightShift(3) = ");


結果は以下。

bArr.RightShift(3) = False, True, True, True, True, False, False, False, 


論理AND演算[And]

var num1 = new byte[] {0b_1111_0000};
var bArr1 = new BitArray(num1);

var num2 = new byte[] {0b_0011_0011};
var bArr2 = new BitArray(num2);

ConsoleBitArray(bArr1.And(bArr2), "bArr1.And(bArr2) = ");


結果は以下。

bArr1.And(bArr2) = False, False, False, False, True, True, False, False, 


論理OR演算子[Or]

var num1 = new byte[] {0b_1111_0000};
var bArr1 = new BitArray(num1);

var num2 = new byte[] {0b_0011_0011};
var bArr2 = new BitArray(num2);

ConsoleBitArray(bArr1.Or(bArr2), "bArr1.Or(bArr2) = ");


結果は以下。

bArr1.Or(bArr2) = True, True, False, False, True, True, True, True, 


論理排他的OR演算子[Xor]

var num1 = new byte[] {0b_1111_0000};
var bArr1 = new BitArray(num1);

var num2 = new byte[] {0b_0011_0011};
var bArr2 = new BitArray(num2);

ConsoleBitArray(bArr1.Xor(bArr2), "bArr1.Xor(bArr2) = ");


結果は以下。

bArr1.Xor(bArr2) = True, True, False, False, False, False, True, True, 


指定したインデックスの値を取得[Get]

インデックスは0から開始します。

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);

Console.Write($"bArrのインデックス3番目 = {bArr.Get(3)}");


結果は以下。

bArrのインデックス3番目 = False


指定したインデックスに値を設定[Set]

インデックスは0から開始します。

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);

bArr.Set(0, true);
ConsoleBitArray(bArr, "bArr.Set(0, true) = ");


結果は以下。

bArr.Set(0, true) = True, False, False, False, True, True, True, True, 


すべてに指定した値を設定[SetAll]

var num = new byte[] {0b_1111_0000};
var bArr = new BitArray(num);

bArr.SetAll(true);
ConsoleBitArray(bArr, "bArr.SetAll(true) = ");


結果は以下。

bArr.SetAll(true) = True, True, True, True, True, True, True, True,


まとめ

私は、今まで使ったことがなかったのですが
今回調べてみると便利だなと感じました。
みなさまも参考にしてみてください。
以上。