Funciones Matemáticas
PHP Manual

bindec

(PHP 4, PHP 5)

bindecBinario a decimal

Descripción

number bindec ( string $binary_string )

Devuelve el equivalente decimal de la representación binaria del número del argumento binary_string.

bindec() convierte un número binario a un integer o, si es necesario por razones de tamaño, 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 un bit del signo.

Parámetros

binary_string

La cadena binaria a convertir

Warning

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

Valores devueltos

El valor decimal de binary_string

Historial de cambios

Versión Descripción
Desde 4.1.0 Esta función puede ahora convertir números del tipo integer que eran muy grandes para encajar en dicho tipo, siendo en dicho caso devueltos los valores grandes como float.

Ejemplos

Example #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

Example #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 en si mismo.
 */

$magnitude_lower pow(2, (PHP_INT_SIZE 8) - 2);
p($magnitude_lower 1);
p($magnitude_lower'Observa el cambio?  Míralo la próxima vez...');

p(PHP_INT_MAX'PHP_INT_MAX');
p(~PHP_INT_MAX'interpretado para ser uno más que PHP_INT_MAX');

if (
PHP_INT_SIZE == 4) {
    
$note 'interpretado para ser el mayor entero sin signo';
} else {
    
$note 'interpretado para ser el mayor entero sin signo
              (18446744073709551615) aunque sesgada por la precisión del float'
;
}
p(-1$note);


function 
p($input$note '') {
    echo 
"input:        $input\n";

    
$format '%0' . (PHP_INT_SIZE 8) . 'b';
    
$bin sprintf($format$input);
    echo 
"binary:       $bin\n";

    
ini_set('precision'20);  // Para ser leido en bloques 64 bit.
    
$dec bindec($bin);
    echo 
'bindec():     ' $dec "\n";

    if (
$note) {
        echo 
"NOTA:         $note\n";
    }

    echo 
"\n";
}
?>

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

input:        1073741823
binary:       00111111111111111111111111111111
bindec():     1073741823

input:        1073741824
binary:       01000000000000000000000000000000
bindec():     1073741824
NOTA:         Observa el cambio?  Míralo la próxima vez...

input:        2147483647
binary:       01111111111111111111111111111111
bindec():     2147483647
NOTA:         PHP_INT_MAX

input:        -2147483648
binary:       10000000000000000000000000000000
bindec():     2147483648
NOTA:         interpretado para ser uno más que PHP_INT_MAX

input:        -1
binary:       11111111111111111111111111111111
bindec():     4294967295
NOTA:         interpretado para ser el mayor entero sin signo

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

input:        4611686018427387903
binary:       0011111111111111111111111111111111111111111111111111111111111111
bindec():     4611686018427387903

input:        4611686018427387904
binary:       0100000000000000000000000000000000000000000000000000000000000000
bindec():     4611686018427387904
NOTA:         Observa el cambio?  Míralo la próxima vez...

input:        9223372036854775807
binary:       0111111111111111111111111111111111111111111111111111111111111111
bindec():     9223372036854775807
NOTA:         PHP_INT_MAX

input:        -9223372036854775808
binary:       1000000000000000000000000000000000000000000000000000000000000000
bindec():     9223372036854775808
NOTA:         interpretado para ser uno más que PHP_INT_MAX

input:        -1
binary:       1111111111111111111111111111111111111111111111111111111111111111
bindec():     18446744073709551616
NOTA:         interpretado para ser el mayor entero sin signo
              (18446744073709551615) aunque sesgada por la precisión del float

Ver también


Funciones Matemáticas
PHP Manual