こんにちは。
本日は、BitArrayのメモです。
オン→true、オフ→false
のブール型の配列となっています。
- 概要
- 初期化
- 指定した値で作成
- 左シフト[LeftShift]
- 右シフト[RightShift]
- 論理AND演算[And]
- 論理OR演算子[Or]
- 論理排他的OR演算子[Xor]
- 指定したインデックスの値を取得[Get]
- 指定したインデックスに値を設定[Set]
- すべてに指定した値を設定[SetAll]
- まとめ
概要
各サンプルにて、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,
まとめ
私は、今まで使ったことがなかったのですが
今回調べてみると便利だなと感じました。
みなさまも参考にしてみてください。
以上。