#include <stdio.h>      #define ARRAYSIZE 16      void binaryadd(int *array1, int *array2, int *array3)   {       int carry = 0;       int i;          for (i = ARRAYSIZE - 1; i >= 0; --i) {           array3[i + 1] = array1[i] ^ array2[i] ^ carry;           carry = ((array1[i] ^ array2[i]) & carry) | (array1[i] & array2[i]);       }       array3[i + 1] = carry;   }      void printarray(int *array, int size)   {       int i;       for (i = 0; i < size; ++i)           printf("%d ", array[i]);       printf("\\n");   }      main()   {       int i;       int array1[ARRAYSIZE]   =    {0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0};       int array2[ARRAYSIZE]   =    {0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0};       int array3[ARRAYSIZE+1] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};          binaryadd(array1, array2, array3);          printf("  ");       printarray(array1, ARRAYSIZE);       printf("  ");       printarray(array2, ARRAYSIZE);       printarray(array3, ARRAYSIZE+1);   }