Thursday, January 28, 2010

2.2 - Decimal a Binario Forma 2

Aqui otra forma un poco mas sencilla de resolver el problema de convertir decimal a binario, radica en tener el decimal y dividirlo entre 2, si resulta non el bit es activo, se vuelve a dividir entre 2 (sin fracción) y si resulta par el bit es inactivo, asi hasta obtener 0.

Como lo vamos almacenando de izquierda a derecha, solo invertimos el orden.

Nota: Si lo realizan en alguna libreta, pongan los bits de derecha a izquierda.

---------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
#include <string>
#include <algorithm>

//Nota: El std:: significa que usamos algun elemento de la biblioteca estandar

std::string convierte(unsigned long n){
    std::string binario;                    //Declaramos una cadena
   
    for(unsigned long i=n;i!=0;i/=2){        //Repetimos la operacion n bits (la calculamos dividiendo hasta que de 0)
        binario.push_back('0' + (i % 2));     //Dividimos entre 2 si es non el bit es activo
    }
   
    std::reverse(binario.begin(),binario.end()); //Como push_back lo inserta adelante de la cadena, lo invertimos
   
    if(binario.empty()){
        binario.push_back('0');                //Si nos dieron 0 les davolemos 0
    }
   
    return binario;
}

int main(){
    unsigned long n;
    while(std::cin>>n){                        //Ciclo pidiendo el valor decimal
        std::cout<<convierte(n)<<"\n\n";    //Imprimimos
    }
   
    return 0;
}

No comments:

Post a Comment