# 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 last characters of two strings and compute digit sum one by one. If sum becomes more than 1, then store carry for next digits.

## C++

 `// C++ program to add two binary strings ` `#include ` `using` `namespace` `std; ` ` `  `// This function adds two binary strings and return ` `// result as a third string ` `string addBinary(string a, string b) ` `{ ` `    ``string result = ``""``; ``// Initialize result ` `    ``int` `s = 0;          ``// Initialize digit sum ` ` `  `    ``// Traverse both strings starting from last ` `    ``// characters ` `    ``int` `i = a.size() - 1, j = b.size() - 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 program ` `int` `main() ` `{ ` `    ``string a = ``"1101"``, b=``"100"``; ` `    ``cout << addBinary(a, b) << endl; ` `    ``return` `0; ` `} `

## 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 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.charAt(i) - ``'0'``: ``0``); ` `            ``s += ((j >= ``0``)? b.charAt(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 args[]) ` `    ``{ ` `        ``String a = ``"1101"``, b=``"100"``; ` `         `  `        ``System.out.print(addBinary(a, b)); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007. `

## Python3

 `# Python Solution for above problem: ` ` `  `# This function adds two binary  ` `# strings return the resulting string ` `def` `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 strings ` `using` `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 ` `?> `

Output:

`10001`

Thanks to Gaurav Ahirwar for suggesting above solution. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up