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 16int 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;elseif(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++;}}elseif(n1<0){for(i=na-1;i>=0;i--){if(r1[i]==1)
invert[i]=0;elseif(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);return0;}
Pergunta
Matheus William
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:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.