//Ejemplo de uso: binarioDecimal("101.00000000");
float ALU::binarioDecimal(string binario)
{
int numeroDeDecimales = 8;
//pasa un numero de binario a decimal
string decimal = binario.substr((binario.length()-numeroDeDecimales),numeroDeDecimales);//coge la parte decimal del binario
string entero = binario.substr(0,binario.length()-(numeroDeDecimales+1));//coge la parte entera del binario
//longitud de la parte entera
int enteroL = entero.length();
float sol = 0.00;//valor del numero en decimal
//recorre la parte entera de derrecha a izquierda y va haciendo esto
/* 1 0 1
2^2 2^1 2^0 suma los que tienen un 1
4 + + 1
en decimal da 5
*/
int contador=0;
for (int var = enteroL-1; var >= 0 ; var--) {
if(entero.substr(var,1)=="1"){
sol+=pow(2,contador);
}
contador++;
}
//calcula en decimal la parte de despues de la coma en el binario
/*
0 . 1 0 1
1/2^1 1/2^3
los sumas
*/
int decimalL = decimal.length();
for (int var = 1; var <= decimalL ; var++) {
if(decimal.substr(var-1,1)=="1"){
float aux = pow(2,var);
float auxi = 1/aux;
sol+=auxi;
}
}
return sol;
}