Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lớp BitArray trong C#

Giới thiệu

BitArray (namespace System.Collections) quản lý mảng bit compact, mỗi bit là Boolean (true = 1, false = 0). Tiết kiệm bộ nhớ so với bool[] (1 bit vs 1 byte).

Các phương thức phổ biến

STT Phương thức & Mô tả
1 public BitArray And(BitArray value);
Phép AND bitwise với BitArray khác.
2 public bool Get(int index);
Lấy giá trị bit tại vị trí chỉ định.
3 public BitArray Not();
Đảo ngược tất cả bit (NOT bitwise).
4 public BitArray Or(BitArray value);
Phép OR bitwise với BitArray khác.
5 public void Set(int index, bool value);
Đặt bit tại vị trí cụ thể.
6 public void SetAll(bool value);
Đặt tất cả bit thành giá trị chỉ định.
7 public BitArray Xor(BitArray value);
Phép XOR bitwise (phép loại trừ).

Ví dụ 1: Tạo BitArray và kiểm tra thuộc tính

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        BitArray arr1 = new BitArray(2);
        BitArray arr2 = new BitArray(2);
        
        arr1[0] = false;
        arr1[1] = true;
        
        Console.WriteLine("Elements in BitArray1...");
        foreach (bool res in arr1)
        {
            Console.WriteLine(res);
        }
        
        arr2[0] = false;
        arr2[1] = true;
        
        Console.WriteLine("Elements in BitArray2...");
        foreach (bool res in arr2)
        {
            Console.WriteLine(res);
        }
        
        Console.WriteLine("Is BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
        Console.WriteLine("Is BitArray synchronized? = " + arr2.IsSynchronized);
        Console.WriteLine("Is BitArray read-only? = " + arr2.IsReadOnly);
    }
}

Kết quả

Elements in BitArray1...
False
True
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False
Is BitArray synchronized? = False
Is BitArray read-only? = False

Ví dụ 2: Phép XOR bitwise

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        BitArray arr1 = new BitArray(5);
        BitArray arr2 = new BitArray(5);
        
        arr1[0] = false;
        arr1[1] = false;
        
        arr2[0] = false;
        arr2[1] = true;
        
        Console.WriteLine("BitArray1 elements...");
        foreach (bool res in arr1)
        {
            Console.WriteLine(res);
        }
        
        Console.WriteLine("\nBitArray2 elements...");
        foreach (bool res in arr2)
        {
            Console.WriteLine(res);
        }
        
        Console.WriteLine("\nBitwise exclusive OR operation...");
        IEnumerable demoEnum = arr1.Xor(arr2);
        foreach (Object ob in demoEnum)
        {
            Console.WriteLine(ob);
        }
    }
}

Kết quả

BitArray1 elements...
False
False
False
False
False
BitArray2 elements...
False
True
False
False
False
Bitwise exclusive OR operation...
False
True
False
False
False

Lưu ý quan trọng

  • Equals() so sánh THAM CHIẾU, không so sánh nội dung bit
  • Phép bitwise (And, Or, Xor) trả về IEnumerable, KHÔNG sửa đổi BitArray gốc
  • Để lưu kết quả: BitArray result = new BitArray(arr1); result.Or(arr2);
  • Hai BitArray phải cùng Length
  • Not() trả về BitArray MỚI đã đảo bit

Bảng chân lý các phép toán

A B AND OR XOR NOT A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0