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

Updated on: 30-Jul-2019

135 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements