Comunidad PHPeros
Otros => Los Retos PHPeros => Mensaje iniciado por: javipilo en 21 de Octubre de 2011, 10:22:23 am
-
Para este reto deberéis hacer una calculadora binaria, que pase de decimal a binario y al contrario.
Si no sabes usar el sistema binario busca en google como usarlo, luego desarrollo más el post cuando llegue a mi casa jeje.
-
Siento no aportar nada pero... ya existe una función para eso...
Saludos,
Ángel Q.
-
Lo sé, pero tienen que hacer una para superar el reto.
-
<?php
function validar_binario($str)
{
foreach(str_split($str) as $bit)
{
if($bit == 0 || $bit == 1)
{}
else
{
return false;
}
}
return true;
}
function bin_a_dec($bin)
{
$bin = ltrim($bin,'0');
$bin = strrev($bin);
if( validar_binario($bin))
{
$resultado = 0;
foreach(str_split($bin) as $pos => $bit)
{
if($bit == '1')
{
$resultado = pow(2,$pos) + $resultado;
}
}
return $resultado;
}
else
{
die("No es un numero binario");
}
}
function dec_a_bin($n)
{
$dividendo = $n;
$cociente = 0;
$binario = '';
do
{
$cociente = floor($dividendo / 2);
$resto = $dividendo % 2;
$binario .= $resto;
$dividendo = $cociente;
}
while( $dividendo >1);
if($dividendo ==1){
$binario .=1;
}
return strrev($binario);
}
-
<?php
function validar_binario($str)
{
foreach(str_split($str) as $bit)
{
if($bit == 0 || $bit == 1)
{}
else
{
return false;
}
}
return true;
}
function bin_a_dec($bin)
{
$bin = ltrim($bin,'0');
$bin = strrev($bin);
if( validar_binario($bin))
{
$resultado = 0;
foreach(str_split($bin) as $pos => $bit)
{
if($bit == '1')
{
$resultado = pow(2,$pos) + $resultado;
}
}
return $resultado;
}
else
{
die("No es un numero binario");
}
}
function dec_a_bin($n)
{
$dividendo = $n;
$cociente = 0;
$binario = '';
do
{
$cociente = floor($dividendo / 2);
$resto = $dividendo % 2;
$binario .= $resto;
$dividendo = $cociente;
}
while( $dividendo >1);
if($dividendo ==1){
$binario .=1;
}
return strrev($binario);
}
Bien, pero tu código está poco optimizado. Repasalo y verás que hay algunas cosas que hacen que gaste (poco) más, pero que si se usa en un bucle se acumula.
Saludos