Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ดึงค่าบิตที่ตำแหน่งเฉพาะใน BitArray ใน C#

ภาพรวม

BitArray ใน namespace System.Collections จัดการอาร์เรย์บิตแบบกะทัดรัด เมธอด Get(int index) หรือดัชนี arr[index] ใช้ดึงค่าบูลีน (true/false) ที่ตำแหน่งที่ระบุ

ตัวอย่างที่ 1: ดึงค่าบิตและเปรียบเทียบ BitArray สองตัว

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("BitArray1 length = " + arr1.Length);
        Console.WriteLine("BitArray1 first element = " + arr1.Get(0));
        arr2[0] = false;
        arr2[1] = true;
        Console.WriteLine("\nBitArray2 length = " + arr2.Length);
        Console.WriteLine("Elements in BitArray2...");
        foreach (bool res in arr2)
        {
            Console.WriteLine(res);
        }
        Console.WriteLine("\nIs BitArray1 equal to BitArray2? = " + arr2.Equals(arr1));
    }
}

ผลลัพธ์

BitArray1 length = 2
BitArray1 first element = False
BitArray2 length = 2
Elements in BitArray2...
False
True
Is BitArray1 equal to BitArray2? = False

ตัวอย่างที่ 2: ดึงค่าบิตหลายตำแหน่ง

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        BitArray arr = new BitArray(5);
        arr[0] = false;
        arr[1] = true;
        arr[2] = false;
        arr[3] = true;
        Console.WriteLine("BitArray length = " + arr.Length);
        Console.WriteLine("BitArray first element = " + arr.Get(0));
        Console.WriteLine("BitArray second element = " + arr.Get(1));
    }
}

ผลลัพธ์

BitArray length = 5
BitArray first element = False
BitArray second element = True

คำอธิบายเพิ่มเติม

  • Get(index) และ arr[index] ให้ผลลัพธ์เหมือนกัน แต่ Get() เป็นเมธอดแบบชัดเจน
  • ดัชนีเริ่มต้นที่ 0 ถึง Length-1
  • Equals() สำหรับ BitArray เปรียบเทียบอ้างอิง (reference) ไม่ใช่ค่า ใช้ Cast<bool>().SequenceEqual() สำหรับเปรียบเทียบค่า
  • BitArray เหมาะสำหรับการจัดการแฟล็กจำนวนมาก ประหยัดหน่วยความจำ