C# BitArray (位组)

  • BitArray

    BitArray类管理一个紧凑的位值数组,这些值表示为布尔值,其中true表示该位为开(1),false表示该位为关(0)。当您需要存储位但不事先知道位数时使用它。您可以通过使用从零开始的整数索引来访问BitArray集合中的项目。
  • BitArray类的方法和属性

    BitArray 类的方法和属性
    下表列出了 BitArray 类的一些常用属性-
    属性 功能
    Count 获取BitArray中包含的元素数。
    IsReadOnly 获取一个值,该值指示BitArray是否为只读。
    Item 获取或设置BitArray中特定位置的位的值。
    Length 获取或设置BitArray中的元素数。
    下表列出了BitArray类的一些常用方法-
    方法 功能
    public BitArray And(BitArray value); 对当前BitArray中的元素与指定BitArray中的相应元素执行按位与运算。
    public bool Get(int index); 获取BitArray中特定位置的位的值。
    public BitArray Not(); 反转当前BitArray中的所有位值,以便将设置为true的元素更改为false,并将设置为false的元素更改为true。
    public BitArray Or(BitArray value); 对当前BitArray中的元素与指定BitArray中的相应元素执行按位或运算。
    public void Set(int index, bool value); 将BitArray中特定位置的位设置为指定值。
    public void SetAll(bool value); 将BitArray中的所有位设置为指定值。
    public BitArray Xor(BitArray value); 对当前BitArray中的元素与指定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