سه شنبه ۲۷ شهريور ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش سی شارپ - کلاس BitArray

کلاس BitArray یک آرایه فشرده از مقادیر بیت را مدیریت می‌کند. در این آرایه، بیت‌ها به صورت بولین (Boolean) نمایش داده می‌شوند؛ به این صورت که true بیانگر روشن بودن بیت (1) و false بیانگر خاموش بودن بیت (0) است.

این کلاس در مواقعی استفاده می‌شود که نیاز به ذخیره بیت‌ها وجود دارد، اما تعداد بیت‌ها را پیش‌بینی نمی‌کنید. می‌توانید با استفاده از یک شاخص صحیح (integer index)، که از صفر شروع می‌شود، به آیتم‌های مجموعه BitArray دسترسی پیدا کنید.

متدها و خصوصیات کلاس BitArray

در جدول زیر، برخی از خصوصیات رایج کلاس BitArray آمده است:

شماره خصوصیت و توضیحات
1

Count

تعداد عناصر موجود در BitArray را برمی‌گرداند.

2

IsReadOnly

مقداری را برمی‌گرداند که نشان می‌دهد آیا BitArray قابل خواندن است یا خیر.

3

Item

مقدار بیت در موقعیت خاصی در BitArray را برمی‌گرداند یا تنظیم می‌کند.

4

Length

تعداد عناصر موجود در BitArray را برمی‌گرداند یا تنظیم می‌کند.

در جدول زیر، برخی از متدهای رایج کلاس BitArray آمده است:

شماره متد و توضیحات
1

public BitArray And(BitArray value);

عملیات AND بیت‌به‌بیت را بر روی عناصر فعلی BitArray با عناصر متناظر در BitArray مشخص شده انجام می‌دهد.

2

public bool Get(int index);

مقدار بیت در موقعیت خاصی در BitArray را برمی‌گرداند.

3

public BitArray Not();

تمامی مقادیر بیت در BitArray فعلی را معکوس می‌کند؛ به طوری که عناصری که به true تنظیم شده‌اند، به false تغییر می‌کنند و عناصری که به false تنظیم شده‌اند، به true تغییر می‌کنند.

4

public BitArray Or(BitArray value);

عملیات OR بیت‌به‌بیت را بر روی عناصر فعلی BitArray با عناصر متناظر در BitArray مشخص شده انجام می‌دهد.

5

public void Set(int index, bool value);

بیت در موقعیت خاصی در BitArray را به مقدار مشخص شده تنظیم می‌کند.

6

public void SetAll(bool value);

تمامی بیت‌ها در BitArray را به مقدار مشخص شده تنظیم می‌کند.

7

public BitArray Xor(BitArray value);

عملیات XOR بیت‌به‌بیت را بر روی عناصر فعلی BitArray با عناصر متناظر در 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