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

Lấy/ghi bit tại vị trí cụ thể trong BitArray C#

Giới thiệu

BitArray cho phép truy cập bit qua indexer [int index] (get/set) hoặc phương thức Get(int index)/Set(int index, bool value). Index 0-based.

Ví dụ 1: Get/Set và so sá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("Độ dài BitArray1 = " + arr1.Length);
        Console.WriteLine("BitArray1 phần tử đầu = " + arr1.Get(0));

        arr2[0] = false;
        arr2[1] = true;

        Console.WriteLine("\nĐộ dài BitArray2 = " + arr2.Length);
        Console.WriteLine("Các phần tử BitArray2...");
        foreach (bool res in arr2)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("\nBitArray1 bằng BitArray2? = " + arr2.Equals(arr1));
    }
}

Kết quả

Độ dài BitArray1 = 2
BitArray1 phần tử đầu = False
Độ dài BitArray2 = 2
Các phần tử BitArray2...
False
True
BitArray1 bằng BitArray2? = False

Ví dụ 2: Cập nhật bit tại index 0

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("Độ dài BitArray1 = " + arr1.Length);
        Console.WriteLine("BitArray1 phần tử đầu = " + arr1.Get(0));

        arr1[0] = true; // cập nhật
        Console.WriteLine("BitArray1 phần tử đầu [CẬP NHẬT] = " + arr1.Get(0));

        arr2[0] = false;
        arr2[1] = true;

        Console.WriteLine("\nĐộ dài BitArray2 = " + arr2.Length);
        Console.WriteLine("Các phần tử BitArray2...");
        foreach (bool res in arr2)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("\nBitArray1 bằng BitArray2? = " + arr2.Equals(arr1));
    }
}

Kết quả

Độ dài BitArray1 = 2
BitArray1 phần tử đầu = False
BitArray1 phần tử đầu [CẬP NHẬT] = True
Độ dài BitArray2 = 2
Các phần tử BitArray2...
False
True
BitArray1 bằng BitArray2? = False

So sánh Equals

  • Equals trên BitArray so sánh tham chiếu (reference equality), không so sánh nội dung bit.
  • Để so sánh nội dung, duyệt từng bit hoặc dùng Cast<bool>().SequenceEqual(...) (LINQ).