Хранение битов с помощью класса BitArray

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002175.docx

Хранение битов с помощью класса BitArray

Класс BitArray предназначен для поддержки коллекции битов. По- скольку его назначение состоит в хранении битов, а не объектов, то и его возможности отличаются от возможностей других коллекций. Тем не менее, класс BitArray поддерживает базовый набор средств коллекции посредством реализации интерфейсов iCollection, lEnumerable и ICloneable.

С помощью этого конструктора можно создать     BitArray-

коллекцию заданного размера: public   BitArray (int size)

Здесь параметр size задает количество битов в коллекции, причем все они инициализируются значением false.

 

public BitArray (bool[] bits)

 

В этом случае каждый элемент массива bits становится битом BitArray-коллекции. При этом каждый бит в коллекции соответствует элементу массива bits. Более того, порядок элементов массива bits ана- логичен порядку битов в коллекции.

 

BitArray-коллекцию можно также создать из массива байтов. Для это- го используйте следующий конструктор:

 

public BitArray (byte[] bits)

 

Здесь битами коллекции становится набор битов, содержащийся в массиве bits, причем элемент bits[0] определяет первые восемь битов, элемент bits[1] — вторые восемь битов и т.д.

 

Подобным образом можно создать Bit Array-коллекцию из массива других типов.


BitArray-коллекций могут быть индексированными. Каждый индекс соответствует определенному биту, причем нулевой индекс соответству- ет младшему биту.

 

В коллекции созданы методы для выполнения логических операций с битами.

 

// Демонстрация использования класса BitArray.

using System;

using System.Collections;

 

class BADemo

{

public static void showBits(string rem, BitArray bits)

{

Console.WriteLine(rem);

for (int i = 0; i < bits.Count; i++) Console.Write("{0, -6} ", bits[i]);

Console.WriteLine("\n");

}

public static void Main()

{

BitArray ba = new BitArray(8);                     // все биты = false

 

byte[] b = { 67 };

BitArray ba2 = new BitArray(b); Console.Write("Бит 5 = {0, -6} ", ba2[5]);

showBits("Исходное содержимое бит.коллекции ba:", ba); ba = ba.Not();

showBits ("Содержимое коллек. ba после вызова Not():", ba); showBits("Содержимое коллекции ba2:", ba2);

 

BitArray ba3 = ba.Xor(ba2);

showBits("Результат операции ba XOR ba2:", ba3);

}

}