День сто сорок пятый. #ЗаметкиНаПолях

Коллекции в C#

5. Битовый массив BitArray

Битовый массив управляет компактным массивом значений битов, которые представлены как логические значения, где true указывает, что бит включен (1), а false указывает, что бит выключен (0).

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

// Инициализация (все значения false)

var ba1 = new BitArray(16);

// Инициализация массивом байтов

// 16 элементов: 1й байт - 0-7, 2й байт - 8-15

byte[] bt = new byte[] { 10, 64 };

var ba2 = new BitArray(bt);

// Количество элементов (16)

var cnt = ba2.Length;

// Установка отдельного значения

ba1[13] = true;



Класс BitArray предоставляет методы, которых нет в других коллекциях, в том числе те, которые позволяют одновременно изменять несколько элементов с помощью фильтров, таких как And, Or, Xor, Not и SetAll:

// изменение значений на противоположные

ba1.Not();

// Побитовое И (изменяет ba1)

ba1.And(ba2);

// Побитовое ИЛИ (изменяет ba1)

ba1.Or(ba2);

// Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (изменяет ba1)

ba1.Xor(ba2);

// Установка всех значений

ba1.SetAll(true);



Источники:

-
https://docs.microsoft.com/ru-ru/dotnet/api/system.collections.bitarray