Aquí una forma para simular la suma binaria, me salio algo largo el código, después tratare de mejorarlo un poco, uso un algoritmo simple de suma sobre la base del sistema en este caso binario.
----------------------------------------------------------------------------------------------------
#include <iostream>
#include <string>
#include <algorithm>
bool decimal1[25];
bool decimal2[25];
//Nota: El std:: significa que usamos algun elemento de la biblioteca estandar
void convierte(unsigned long n1, unsigned long n2){
std::string binario;
int c=0,acomulado=0;
for(unsigned long i=n1,j=n2;i!=0 || j!=0;i/=2,j/=2){ //Calculamos los numeros binarios
if(i % 2 != 0){
decimal1[c] = 1;
}else{
decimal1[c] = 0;
}
if(j % 2 != 0){
decimal2[c] = 1;
}else{
decimal2[c] = 0;
}
c++;
}
for(int i=0;i<25;i++){
binario.push_back('0' + ((decimal1[i]+decimal2[i]+acomulado) % 2)); //Calculamos el resultado del digito
acomulado = (decimal1[i]+decimal2[i]+acomulado)/2; //Acomulamos si sobrepaso la base
decimal1[i]=0; //Reiniciamos los valores
decimal2[i]=0;
}
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
}
std::cout <<"Suma: " << binario <<"\n\n\n"; //Resultado
}
int main(){
unsigned long n1,n2;
while(std::cin>>n1>>n2){ //Ciclo pidiendo los valores decimales
convierte(n1,n2);
}
return 0;
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment