/* * C Program to Input 2 Binary Strings and Print their Binary * Sum */ #include #include #include int bin_verify(char []); void sum(char [], char [], char []); int main() { char bin1[33], bin2[33], result[33]; int len1, len2, check; printf("Enter binary number 1: "); scanf("%s", bin1); printf("Enter binary number 2: "); scanf("%s", bin2); check = bin_verify(bin1); if (check) { printf("Invalid binary number %s. ", bin1); exit(0); } check = bin_verify(bin2); if (check) { printf("Invalid binary number %s. ", bin2); exit(0); } sum(bin1, bin2, result); printf("%s + %s = %s ", bin1, bin2, result); return 0; } int bin_verify(char str[]) { int i; for (i = 0; i < strlen(str); i++) { if ((str[i] - '0' != 1 ) && (str[i] - '0' != 0)) { return 1; } } return 0; } void sum(char bin1[], char bin2[], char result[]) { int i = strlen(bin1) - 1; int j = strlen(bin2) - 1; int carry = 0, temp, num1, num2; while (i > -1 && j > -1) { num1 = bin1[i] - '0'; num2 = bin2[j] - '0'; temp = num1 + num2 + carry; if (temp / 2 == 1) { carry = 1; temp %= 2; } if (i > j) { result[i + 1] = temp + '0'; result[strlen(bin1) + 1] = ''; } else { result[j +1] = temp + '0'; result[strlen(bin2) + 1] = ''; } i--; j--; } while (i > -1) { temp = bin1[i] + carry - '0'; if (temp / 2 == 1) { carry = 1; temp %= 2; } result[i + 1] = temp + '0'; i--; } while (j > -1) { temp = bin2[j] + carry - '0'; if (temp / 2 == 1) { carry = 1; temp %= 2; } result[j + 1] = temp + '0'; j--; } if (carry) { result[0] = '1'; } else { result[0] = '0'; } } Enter binary number 1: 0110 Enter binary number 2: 1011 0110 + 1011 = 10001