Подсчет битов, установленных в классе .Net BitArray

Я реализую библиотеку, в которой я широко использую класс .Net BitArray и нуждаюсь в эквиваленте метода Java BitSet.Cardinality (), то есть метода, который возвращает количество установленных битов. Я думал реализовать его как метод расширения для класса BitArray. Тривиальная реализация состоит в том, чтобы перебирать и подсчитывать установленные биты (как показано ниже), но мне нужна была более быстрая реализация, поскольку я выполнял бы тысячи операций с наборами и подсчитывал ответ. Есть ли более быстрый способ, чем в приведенном ниже примере?

count = 0;

for (int i = 0; i < mybitarray.Length; i++)
{

  if (mybitarray [i])
    count++;
}
20
задан Scott M. 21 February 2011 в 07:13
поделиться