Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #define NB 32
- int binarioParaDecimal(char binario[]);
- void decimalParaBinario(int num);
- int soma(int n1, int n2);
- int maior(int n1, int n2);
- int main()
- {
- int n1, n2;
- while(scanf("%d %d", &n1, &n2))
- printf("%d\n", soma(n1, n2));
- }
- int binarioParaDecimal(char binario[])
- {
- int i, soma = 0;
- for(i = strlen(binario) - 1; i >= 0; i--)
- {
- if(binario[i] == '1')
- soma += pow(2, i);
- }
- return soma;
- }
- void decimalParaBinario(int num, char strDest[])
- {
- char binario[NB + 1];
- int i = 0;
- while(num > 0)
- {
- if(num % 2 == 0)
- binario[i] = '0';
- else
- binario[i] = '1';
- num /= 2;
- i++;
- }
- binario[i] = '\0';
- strcpy(strDest, binario);
- }
- int maior(int n1, int n2)
- {
- if(n1 > n2) return n1;
- else return n2;
- }
- int soma(int n1, int n2)
- {
- char b1[NB + 1], b2[NB + 2], soma[NB + 1];
- int i;
- decimalParaBinario(n1, b1);
- decimalParaBinario(n2, b2);
- soma[maior(strlen(b1), strlen(b2))] = '\0';
- for(i = maior(strlen(b1), strlen(b2)) - 1; i >= 0; i--)
- {
- if(i < strlen(b1))
- {
- if(i < strlen(b2))
- {
- if(b1[i] == '0')
- soma[i] = b2[i];
- else if(b1[i] == '1')
- {
- if(b2[i] == '1')
- soma[i] = '0';
- else
- soma[i] = '1';
- }
- }
- else
- {
- soma[i] = b1[i];
- }
- }
- else
- if(i < strlen(b2))
- soma[i] = b2[i];
- }
- return binarioParaDecimal(soma);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement