# Add n binary strings in C++?

Here we will see how we can write a program that can add n binary numbers given as strings. The easier method is by converting binary string to its decimal equivalent, then add them and convert into binary again. Here we will do the addition manually.

We will use one helper function to add two binary strings. That function will be used for n-1 times for n different binary strings. The function will work like below.

## Algorithm

### addTwoBinary(bin1, bin2)

begin
s := 0
result is an empty string now
i := length of bin1, and j := length of bin2
while i >= 0 OR j>=0 OR s is 1, do
if i >=0 then,
s := s + bin1[i] as number
else
s := s + 0
end if
if j >=0 then,
s := s + bin2[j] as number
else
s := s + 0
end if
result := (s mod 2) concatenate this with result itself
s := s/2
i := i - 1
j := j - 1
done
return result
end

## Example

Live Demo

#include<iostream>
using namespace std;
string addTwoBinary(string bin1, string bin2) {
string result = "";
int s = 0; //s will be used to hold bit sum
int i = bin1.length() - 1, j = bin2.length() - 1; //traverse from LSb
while (i >= 0 || j >= 0 || s == 1) {
if(i >= 0)
s += bin1[i] - '0';
else
s += 0;
if(j >= 0)
s += bin2[j] - '0';
else
s += 0;
result = char(s % 2 + '0') + result;
s /= 2; //get the carry
i--; j--;
}
return result;
}
string add_n_binary(string arr[], int n) {
string result = "";
for (int i = 0; i < n; i++)
result = addTwoBinary(result, arr[i]);
return result;
}
main() {
string arr[] = { "1011", "10", "1001" };
int n = sizeof(arr) / sizeof(arr[0]);
cout << add_n_binary(arr, n) << endl;
}

## Output

10110

Advertisements