.NET эквивалент Java Integer.bitCount? - PullRequest
15 голосов
/ 06 мая 2011

Существует ли метод, аналогичный Java <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Integer.html#bitCount%28int%29" rel="nofollow noreferrer">Integer.bitCount(int)</a> или <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Long.html#bitCount%28long%29" rel="nofollow noreferrer">Long.bitCount(long)</a>, где-либо в .NET Framework?

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

  • Вес Хэмминга
  • Численность населения (часто называется POPCNT при реализации на аппаратном уровне.)

Хотя существует множество из реализаций до be найден в сети, мне было интересно, была ли стандартная реализация библиотеки.

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

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

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

0 голосов
/ 06 мая 2011

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

...