Por ejemplo, para pasar el número decimal 100 a binario, únicamente tenemos que ir dividendo entre 2 y el resultado volverlo a dividir hasta que sea 1. Después de derecha a izquierda, cogemos todos los restos y los ordenamos. Aquí tenéis un ejemplo.
Una de las posibles soluciones ( y la más complicada) es este ejemplo, dónde para solucionar el algoritmo hay que crear dos bucles y un array que almacene los restos de las divisiones.
<?php
/* Creamos la variable dividendo y la mostramos por pantalla */
$dividendo=64;
echo 'El numero en decimal es: '.$dividendo;
/*Creamos la funcion con un bucle while*/
function binario($dividendo)
{
$resultadoRestos=array(); /*Creamos un array para ir almacenando los restos*/
while ($dividendo > 0)
{
$resultado=$dividendo/2; /*Calculamos el resultado*/
$resto=$dividendo%2; /*Calculamos el resto de la division*/
$resultadoRestos[]=$resto; /*Almacenamos el resto*/
$dividendo=intval($resultado); /*Asignamos el numero entero resultante a la variable dividendo de nuevo*/
}
/*Ordenamos el array por el indice descendente y creamos un bucle foreach para mostrar el valor*/
krsort($resultadoRestos);
foreach ($resultadoRestos as $clave => $valor)
{
echo $valor; /*Imprimimos el valor*/
}
}
/* LLamamos a la función y la mostramos por pantalla */
echo ' y en binario es: ';
$binarios=binario($dividendo);
?>
Y la siguiente solución (muchísimo más correcta y con menos código) utilizando la función de PHP decbin.
<?php /* Creamos la variable $numero y la mostramos por pantalla */ $numero=5; echo 'El numero en decimal es: '.$numero; /*Ahora creamos la variable $binario con la función de PHP decbin y la mostramos*/ $binario=decbin($numero); echo ' y en binario es: '.$binario; ?>
Por último, si queremos pasar un número binario a decimal lo más sencillo sería usar la función de PHP bindec, que nos ahorrará mucho tiempo!
Gracias por compartir su conocimiento
ResponderEliminarte acabas de pasar
ResponderEliminar