(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_popcountКоличество единиц в двоичной записи числа


gmp_popcount ( GMP $a ) : int

Возвращает количество единиц в двоичной записи числа.

Список параметров


Либо ресурс (resource) номера GMP в PHP 5.5 и более ранних версиях, объект GMP в PHP 5.6 и более поздних версиях, либо числовая строка при условии, что можно преобразовать последнюю в число.

Возвращаемые значения

Количество единиц в двоичной записи числа a, в виде числа (integer).


Пример #1 Пример использования gmp_popcount()

gmp_init("10000101"2); // 3 1's
echo gmp_popcount($pop1) . "\n";
$pop2 gmp_init("11111110"2); // 7 1's
echo gmp_popcount($pop2) . "\n";

Результат выполнения данного примера:


add a note add a note

User Contributed Notes 1 note

phpmanual at headbank dot co dot uk
10 months ago
If you don't have gmp extension enabled (or don't want to use it for any reason), you can get popcount of an int using decbin() and substr_count().

= 133;
$bin1 = decbin($int1); // "10000101"
echo substr_count($bin1, "1");

// Result: 3

Being a string-comparison this is far less efficient than gmp_popcount() (for which there is a dedicated instruction on most if not all modern processors), but may be handy if gmp is unavailable, or in non-performance-critical code that doesn't otherwise need it.
To Top