Ir para conteúdo
Fórum Script Brasil
  • 0

Converter decimal para binário e fazer a soma em binário dos números convertidos (considerar número negativo e positivo)


Matheus William

Pergunta

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;
}
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...