Está en la página 1de 1

#include <iostream>

#include <string>

using namespace std;

double binarioADecimal(string numeroBinario) {


int puntoPos = numeroBinario.find('.'); // Busca la posición del punto decimal
string parteEntera = numeroBinario.substr(0, puntoPos); // Obtiene la parte
entera
string parteDecimal = numeroBinario.substr(puntoPos + 1); // Obtiene la parte
decimal

int longitudEntera = parteEntera.length();


int longitudDecimal = parteDecimal.length();

double decimal = 0.0;


int potencia = 1;

// Convierte la parte entera a decimal


for (int i = longitudEntera - 1; i >= 0; i--) {
if (parteEntera[i] == '1') {
decimal += potencia;
}
potencia *= 2;
}

// Convierte la parte decimal a decimal


double fraccion = 0.0;
potencia = 2;

for (int i = 0; i < longitudDecimal; i++) {


if (parteDecimal[i] == '1') {
fraccion += 1.0 / potencia;
}
potencia *= 2;
}

decimal += fraccion;

return decimal;
}

int main() {
string numeroBinario;

cout << "Ingrese un número binario (con parte entera y fraccionaria): ";
cin >> numeroBinario;

double decimal = binarioADecimal(numeroBinario);

cout << "El número decimal correspondiente es: " << decimal << endl;

return 0;
}

También podría gustarte