.NET эквивалент Java Integer.bitCount?

Есть ли метод, похожий на Java Integer.bitCount(int) или Long.bitCount(long) в любом месте .NET Framework?

(Для тех, кто не знаком с этими Java-методами) это также называется:

  • Вес Хэмминга
  • Количество посещений (часто называемое POPCNT при использовании в оборудовании.)

Хотя там are много реализаций быть найденным на web, мне было интересно, была ли стандартная реализация библиотеки.

Я знаю, что это не в BitArray, UInt32 или BitConverter, но, возможно, там где-то скрыта версия, например. в криптофункции.

Ответы

Ответ 1

Ни BitVector32, ни BitArray классы имеют такой метод, поэтому я считаю, что этот метод действительно отсутствует в структуре.

Лично я считаю, что эти классы действительно полезны в любом случае, поскольку они пропускают множество операций с естественными битами. Я не уверен, на что они предназначены. Как бы то ни было, их полезность очень ограничена.

Ответ 2

Эти методы основаны на алгоритмах от Hacker Delight. Вы можете скачать C-код для них здесь.