# Program to add two binary strings

Given two binary strings, return their sum (also a binary string).

Example:

Input:  a = "11", b = "1"
Output: "100"

We strongly recommend you to minimize your browser and try this yourself first

The idea is to start from the last characters of two strings and compute the digit sum one by one. If the sum becomes more than 1, then store carry for the next digits.

## C++

## Java

 // java program to add// two binary strings public class GFG {     // This function adds two    // binary strings and return    // result as a third string    static String addBinary(String A, String B)    {           // initialize the ith index        int i = A.length()-1;        // initialize the jth index        int j = B.length()-1;        // initialize the carry         int carry = 0;      // initialize the sum        int sum = 0;        StringBuilder result =  new StringBuilder();        while(i>=0 || j>=0 || carry == 1){            sum = carry;            if(i>=0) sum = sum+A.charAt(i)-'0';            if(j>=0) sum = sum+B.charAt(j)-'0';            result.append((char)(sum%2+'0'));            carry = sum/2;            i--;            j--;        }        return result.reverse().toString();    }     //Driver code    public static void main(String args[])    {        String a = "1101", b="100";                 System.out.print(addBinary(a, b));    }} // This code is contributed by Sam007.// A bit improvement by Mustak Ahmed

## Python3

 # Python Solution for above problem: # This function adds two binary # strings return the resulting stringdef add_binary_nums(x, y):        max_len = max(len(x), len(y))         x = x.zfill(max_len)        y = y.zfill(max_len)                 # initialize the result        result = ''                 # initialize the carry        carry = 0         # Traverse the string        for i in range(max_len - 1, -1, -1):            r = carry            r += 1 if x[i] == '1' else 0            r += 1 if y[i] == '1' else 0            result = ('1' if r % 2 == 1 else '0') + result            carry = 0 if r < 2 else 1     # Compute the carry.                 if carry !=0 : result = '1' + result         return result.zfill(max_len) # Driver code print(add_binary_nums('1101', '100')) # This code is contributed # by Anand Khatri

## C#

 // C# program to add // two binary stringsusing System; class GFG {         // This function adds two     // binary strings and return    // result as a third string    static string addBinary(string a,                             string b)    {                 // Initialize result        string result = "";                  // Initialize digit sum        int s = 0;                  // Traverse both strings starting         // from last characters        int i = a.Length - 1, j = b.Length - 1;        while (i >= 0 || j >= 0 || s == 1)        {                         // Comput sum of last             // digits and carry            s += ((i >= 0)? a[i] - '0': 0);            s += ((j >= 0)? b[j] - '0': 0);             // If current digit sum is             // 1 or 3, add 1 to result            result = (char)(s % 2 + '0') + result;             // Compute carry            s /= 2;             // Move to next digits            i--; j--;        }    return result;    }     // Driver Code    public static void Main(){    string a = "1101", b="100";    Console.Write( addBinary(a, b));}} // This code is contributed by Sam007

## PHP

 = 0 || \$j >= 0 || \$s == 1)    {        // Comput sum of last digits and carry        \$s += ((\$i >= 0)? ord(\$a[\$i]) -                           ord('0'): 0);        \$s += ((\$j >= 0)? ord(\$b[\$j]) -                           ord('0'): 0);         // If current digit sum is 1 or 3,         // add 1 to result        \$result = chr(\$s % 2 + ord('0')) . \$result;         // Compute carry        \$s = (int)(\$s / 2);         // Move to next digits        \$i--; \$j--;    }    return \$result;} // Driver Code\$a = "1101";\$b = "100";echo addBinary(\$a, \$b); // This code is contributed by mits?>

## Javascript



Output
10001

Time Complexity: O(max(L1, L2)), where L1 and L2 are the lengths of strings a and b respectively.
Auxiliary Space: O(max(L1, L2)), where L1 and L2 are the lengths of strings a and b respectively.

Previous
Next