Ir para conteúdo
Matheus William

problema conversão/soma binários

Recommended Posts

 

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Werlang
      Olá. Sou o criador da plataforma gladCode, onde você cria gladiadores desde sua aparência, atributos físicos e mentais até a programação de seu comportamento, e os coloca para lutar contra gladiadores de outros jogadores em uma arena virtual.A programação do comportamento deles conta com uma série de funções, e uma vez dentro da arena eles se comportam de maneira autônoma, sem intervenção de seu mestre.
      Segue o link para o vídeo promocional da plataforma:
       
       
      Visitem a gladCode no site https://gladcode.tk
      Ou a página do Facebook: https://www.facebook.com/gladcode/
      Seria uma honra ter a visita de vocês no site, bem como esclarecer todas suas dúvidas.
       
    • Por MateusOFCZ
      Olá, gostaria de saber como eu faço para mostrar uma imagem diferente ao acessar o site...
      Eu precisaria mostrar a imagem linkada, ou seja, quando clickar na imagem ela levará você para um link, porém cada imagem tem um link diferente, como faço isso?
      Caso você não tenha entendido seria uma espécie de "anúncios" em meu site, toda vez que reentrar nele irá mostrar uma imagem diferente, e essa imagem será linkada, e os links também serão diferentes um do outro.
    • Por Loconarrativo
      Bom, no meu form, eu peço para o cliente digitar um valor (esse valor em reais), mas para continuar eu preciso me certificar que a variável que contem o valor, tenha 16 dígitos ao total, então se a pessoa digita uma 1000.00, eu preciso completar com 9 zeros a esquerda (fica assim 0000000001000.00), para eu saber quantos dígitos tem na variável, eu faço
      $i = strlen( $_POST['valor']);   ai eu faço
      $u = 8 - $i ; eu tenho o numero de zeros que preciso colocar a esquerda, mas como eu transformo isso em vários zeros? 
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por scapedzn
      Olá pessoas! Estou com a seguinte dúvida. Estou fazendo um sistema que é um site onde será possível o cadastro de cursos online. O meu problema é o seguinte. O meu usuário logado salva junto com o nome do curso que ele enviou para o banco dados sua id única de cadastro. Portanto sempre quando ele adicionar qualquer curso, exemplo: aula 1 , junto com isso salva a mesma id de quando ele criou a conta dele, exemplo: 33. Sempre quando ele adicionar novo curso essa id é salva junto para eu saber qual usuário adicionou o novo curso. Porém eu gostaria de listar todos os cursos que o usuário cadastrou para ele mesmo ver. Ou seja, tenho de usar essa ID única dele para pegar todos os nomes de curso que ele adicionou. Não posso dar Select em toda a tabela pois se não ele irá trazer informações que outros usuários adicionaram. Gostaria de listar apenas as informações relacionadas diretamente com o id dele. Não sei se ficou Claro. Mas me ajudem por favor
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.