【C#】BitArray覚えた
BitArrayとはビット値の小型の配列を管理するクラス
基本の使い方
例えば4ビットを管理するクラスを生成する
// BitArray生成 BitArray bits = new BitArray(4); // [false,false,false,false]で初期化 // ビット2をtrueに設定 bits.Set(2,true); // ビット2はtrueかどうか判定 if(bits.Get(2)) { /*do something*/ }
インデクサも使えます
bits[2] = true; if(bits[2]) { /*do something*/ }
BitArrayのメソッドを拡張する
C++のstd::bitsetを参考に実装してみた
using System.Collections; public static class BitArrayExtension { // いずれかのビットがONになっているかを取得する public static bool Any(this BitArray array) { foreach(bool bit in array) if(bit) return true; return false; } // すべてビットがONしてるか取得する public static bool All(this BitArray array) { foreach(bool bit in array) if(!bit) return false; return true; } // すべてのビットがOFFになっているかを取得する public static bool None(this BitArray array) { return !Any(array); } // 指定ビットを反転する public static void Flip(this BitArray array,int index) { array.Set(index,!array.Get(index)); } }
こんな感じ使う
BitArray bits = new BitArray(4); if(bits.Any()) { /*いずれかのビットがONした*/ } if(bits.All()) { /*すべてのビットがONした*/ } if(bits.None()) { /*すべてのビットがOFFした*/ } bits.Flip(3); // bits[3]反転する