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;
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment