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!