bindec

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

bindecBinario 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


$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

To Top