Хранение битов с помощью класса 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);
}
}
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.