gmp_popcount

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

gmp_popcountCuenta la población

Descripción

gmp_popcount( `\$num`): int

Obtiene el conteo de la población.

Parámetros

`num`

resource de número de GMP en PHP 5.5 y anterior, o un objeto de GMP en PHP 5.6 y posterior, o un string numérico siempre que sea posible convertirlo a un número.

Valores devueltos

El conteo de la población de `num`, como un int.

Ejemplos

Ejemplo #1 Ejemplo de gmp_popcount()

`<?php\$pop1 = gmp_init("10000101", 2); // 3 1'secho gmp_popcount(\$pop1) . "\n";\$pop2 = gmp_init("11111110", 2); // 7 1'secho gmp_popcount(\$pop2) . "\n";?>`

```3
7```

`Another way to get the population count when you don't have the gmp extension is using bitwise operations:<?php\$int = 133; // 10000101for(\$count = 0; \$int != 0; \$count++) // repeat until \$int is 0 (and count the amount of steps it takes in \$count){ \$int = \$int & \$int-1; // remove the right most 1 from \$int using the bitwise and operator}echo \$count; // 3?>This is Kernighan's population count.https://youtu.be/ZRNO-ewsNcQ?t=510 has a nice explanation on how it works`
`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.`