# bindec

(PHP 4, PHP 5, PHP 7, PHP 8)

bindec — Binario a decimal

### Descripción

bindec(string `$binary_string`): number

Devuelve el equivalente decimal del número binario representado por el argumento `binary_string`.

bindec() convierte un número binario a un integer o, si es necesario por razones de tamaño, a un float.

bindec() interpreta todos los valores de `binary_string` como enteros sin signo. Esto es debido a que bindec() considera al bit más significativo como otro orden de magnitud en lugar de como el bit de signo.

### Parámetros

`binary_string`

  El string binario a convertir

Advertencia

Este parámetro debe ser un string. Cualquier otro tipo de dato empleado puede producir resultados inesperados.

### Valores devueltos

El valor decimal de `binary_string`

### Ejemplos

Ejemplo #1 Ejemplo de bindec()

`<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";
echo bindec('111');
?>`

El resultado del ejemplo sería:

    51
    51
    7

Ejemplo #2 bindec() interpreta las entradas como enteros sin signo

`<?php
/*
* La lección de este ejemplo es el resultado
* más que el código de PHP en sí.
*/
$magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2);
p($magnitude_lower - 1);
p($magnitude_lower, '¿Ve el incremento? Obsérvelo la próxima vez...');
p(PHP_INT_MAX, 'PHP_INT_MAX');
p(~PHP_INT_MAX, 'interpretado como uno más que PHP_INT_MAX');
if (PHP_INT_SIZE == 4) {
$nota = 'interpretado como el mayor entero sin signo';
} else {
$nota = 'interpretado como el mayor entero sin signo
(18446744073709551615) aunque sesgado por la precisión del float';
}
p(-1, $nota);
function p($entrada, $nota = '') {
echo "entrada: $entrada\n";
$formato = '%0' . (PHP_INT_SIZE * 8) . 'b';
$bin = sprintf($formato, $entrada);
echo "binario: $bin\n";
ini_set('precision', 20); // Para la legibilidad en bloques de 64 bits.
$dec = bindec($bin);
echo 'bindec(): ' . $dec . "\n";
if ($nota) {
echo "NOTA: $nota\n";
}
echo "\n";
}
?>`

El resultado del ejemplo en equipos de 32 bit sería:

    entrada:      1073741823
    binario:      00111111111111111111111111111111
    bindec():     1073741823

    entrada:      1073741824
    binario:      01000000000000000000000000000000
    bindec():     1073741824
    NOTA:         ¿Ve el incremento?  Obsérvelo la próxima vez...

    entrada:      2147483647
    binario:      01111111111111111111111111111111
    bindec():     2147483647
    NOTA:         PHP_INT_MAX

    entrada:      -2147483648
    binario:      10000000000000000000000000000000
    bindec():     2147483648
    NOTA:         interpretado como uno más que PHP_INT_MAX

    entrada:      -1
    binario:      11111111111111111111111111111111
    bindec():     4294967295
    NOTA:         interpretado como el mayor entero sin signo

El resultado del ejemplo en equipos de 64 bit sería:

    entrada:      4611686018427387903
    binario:      0011111111111111111111111111111111111111111111111111111111111111
    bindec():     4611686018427387903

    entrada:      4611686018427387904
    binario:      0100000000000000000000000000000000000000000000000000000000000000
    bindec():     4611686018427387904
    NOTA:         ¿Ve el incremento?  Obsérvelo la próxima vez...

    entrada:      9223372036854775807
    binario:      0111111111111111111111111111111111111111111111111111111111111111
    bindec():     9223372036854775807
    NOTA:         PHP_INT_MAX

    entrada:      -9223372036854775808
    binario:      1000000000000000000000000000000000000000000000000000000000000000
    bindec():     9223372036854775808
    NOTA:         interpretado como uno más que PHP_INT_MAX

    entrada:      -1
    binario:      1111111111111111111111111111111111111111111111111111111111111111
    bindec():     18446744073709551616
    NOTA:         interpretado como el mayor entero sin signo
                  (18446744073709551615) aunque sesgado por la precisión del float

### Notas

> Nota:

> Esta función puede convertir números que son demasiado grandes para caber en el tipo integer de cada plataforma, devolviendo en este caso un valor de tipo float para los valores mayores.

### Ver también

- decbin() - Decimal a binario
- octdec() - Octal a decimal
- hexdec() - Hexadecimal a decimal
- base_convert() - Convertir un número entre bases arbitrarias