problema conversão/soma binários
Eu estou com o seguinte problema: receber dois números decimais e convertê-los para binário e depois realizar a soma binaria dos números que foi convertidos (considerar números negativos). Eu consegui fazer a maior parte, mas a soma esta saindo errada. Quem puder me ajudar eu agradeço.Segue o código do programa ate agora:
#include <stdio.h>
#define na 16
int main() {
int n,n1,r[na],r1[na],i,somav[na],vaium=0,invert[na],np=1;
/*Lê o número*/
printf("\n Digite o primeiro numero: ");
scanf("%d", &n);
/* Utiliza um número de 16 bits como base para a conversão.*/
for(i = na-1; i >= 0; i--) {
r[i] = (n >> i) & 1;
/*Por meio do "e" lógico ele compara se o valor na posição mais à direita é 1 ou 0 e imprime na tela até reproduzir o número binário.*/
if(r[i] & 1)
printf("1",r[i]);
else
printf("0",r[i]);
}
printf("\n Digite o segundo numero: ");
scanf("%d", &n1);
for(i = na-1; i >= 0; i--) {
r1[i] = (n1 >> i) & 1;
if(r1[i] & 1)
printf("1",r1[i]);
else
printf("0",r1[i]);
}
/*for (i=na-1;i>=0;i--)
vaium[i]=0;*/
if(n<0) {
for(i=na-1;i>=0;i--){
if(r[i]==1)
invert[i]=0;
else
if(r[i]==0)
invert[i]=1;
}
for (i=na-1;i>=0;i--)
r[i]=invert[i]+np+vaium;
if(r[i]==2){
r[i]=0;
vaium++;
}
}else
if(n1<0){
for(i=na-1;i>=0;i--){
if(r1[i]==1)
invert[i]=0;
else
if(r1[i]==0)
invert[i]=1;
}
for (i=na-1;i>=0;i--)
r1[i]=invert[i]+np+vaium;
if(r1[i]==2){
r1[i]=0;
vaium++;
}
}
for(i=na-1;i>=0;i--){
somav[i]=r[i]+r1[i]+vaium;
if((somav[i]==2) || (somav[i]==3)){
somav[i]=0;
vaium++;
}
}
printf("\n Soma dos numeros binarios:");
for (i=na-1;i>=0;i--)
printf("%d",somav[i]%2);
return 0;
}Discussão (0)
Carregando comentários...