C# BitArray類

2019-10-16 23:17:17

BitArray類管理位值的緊湊陣列,它們表示為Boolean,其中true表示位為開(1),而false表示位為關(0)。

當需要儲存位但不提前知道位數時,可考慮使用BitArray類。可以通過使用從零開始的整數索引來存取BitArray集合中的專案。

BitArray類的方法和屬性

下表列出了BitArray類的一些常用屬性:

屬性 說明
Count 獲取BitArray中包含的元素數量。
IsReadOnly 獲取一個值,指示BitArray是否為唯讀。
Item 獲取或設定BitArray中特定位置的位的值。
Length 獲取或設定BitArray中的元素數量。

下表列出了BitArray類的一些常用方法:

序號 方法 描述
1 public BitArray And(BitArray value); 對當前BitArray中的元素與指定的BitArray中的相應元素執行按位元AND運算。
2 public bool Get(int index); 獲取BitArray中特定位置的位的值。
3 public BitArray Not(); 反轉當前BitArray中的所有位值,使設定為true的元素更改為false,並將值為false的元素更改為true
4 public BitArray Or(BitArray value); 對當前BitArray中的元素對指定的BitArray中的相應元素執行按位元OR運算。
5 public void Set(int index, bool value); BitArray中指定位置的位設定為指定值。
6 public void SetAll(bool value); BitArray中的所有位設定為指定值。
7 public BitArray Xor(BitArray value); BitArray中的元素對指定的BitArray中的相應元素執行逐位OR操作。

例子

以下範例演示了BitArray的用法:

using System;
using System.Collections;

namespace CollectionsApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            //creating two  bit arrays of size 8
            BitArray ba1 = new BitArray(8);
            BitArray ba2 = new BitArray(8);
            byte[] a = { 60 };
            byte[] b = { 13 };

            //storing the values 60, and 13 into the bit arrays
            ba1 = new BitArray(a);
            ba2 = new BitArray(b);

            //content of ba1
            Console.WriteLine("Bit array ba1: 60");

            for (int i = 0; i < ba1.Count; i++)
            {
                Console.Write("{0, -6} ", ba1[i]);
            }
            Console.WriteLine();

            //content of ba2
            Console.WriteLine("Bit array ba2: 13");

            for (int i = 0; i < ba2.Count; i++)
            {
                Console.Write("{0, -6} ", ba2[i]);
            }
            Console.WriteLine();
            BitArray ba3 = new BitArray(8);
            ba3 = ba1.And(ba2);

            //content of ba3
            Console.WriteLine("Bit array ba3 after AND operation: 12");

            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();
            ba3 = ba1.Or(ba2);

            //content of ba3
            Console.WriteLine("Bit array ba3 after OR operation: 61");

            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

當上述程式碼被編譯並執行時,它產生以下結果:

Bit array ba1: 60 
False False True True True True False False 
Bit array ba2: 13
True False True True False False False False 
Bit array ba3 after AND operation: 12
False False True True False False False False 
Bit array ba3 after OR operation: 61
True False True True False False False False