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 |