.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-код для них здесь.