Dutch PHP Conference 2019

gmp_popcount

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

gmp_popcountPopulation count

Beschreibung

int gmp_popcount ( GMP $a )

Get the population count.

Parameter-Liste

a

Dies kann entweder eine resource für einen GMP-Wert in PHP 5.5 oder voher sein, ein GMP-Objekt in PHP 5.6 und später oder ein numerischer String, wenn es möglich ist, diesen in einen GMP-Wert umzuwandeln.

Rückgabewerte

The population count of a, as an integer.

Beispiele

Beispiel #1 gmp_popcount() example

<?php
$pop1 
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";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

3
7

add a note add a note

User Contributed Notes 1 note

up
0
phpmanual at headbank dot co dot uk
3 days 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().

<?php
$int1
= 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