JavaScript Program to Add Two Binary Strings
Last Updated :
03 Jan, 2025
Here are the various ways to add two binary strings
Using parseInt() and toString()
The parseInt() method used here first converts the strings into the decimal. Ten of these converted decimal values are added together and by using the toString() method, we convert the sum back to the desired binary representation.
Syntax
parseInt(s1,2) + parseInt(s2,2).toString(2);
JavaScript
let s1 = "101010";
let s2 = "1011";
let sum = (
parseInt(s1, 2) +
parseInt(s2, 2)
).toString(2);
console.log(sum);
2. Using BigInt Method
The approach uses the BigInt method where the binary strings are convereted into BigInt integers, then addition is performed and once again the conversion of the sum is to binary string. This is used to handle large binary numbers.
Syntax
let bigIntValue = BigInt(value);
JavaScript
let s1 = "101010";
let s2 = "1011";
let sum = (a, b) => {
let decSum =
BigInt(`0b${a}`) +
BigInt(`0b${b}`);
return decSum.toString(2);
};
console.log(sum(s1, s2));
Using Manual Operation
The manual operations add the binary digits. We initially ensuring that both of the strings are of same length by adding them with leading 0s, and then iterating through the strings from left to right order and adding binary digits while considering the carry.
JavaScript
let str1 = "101010";
let str2 = "1011";
let sum = (m, n) => {
let len = Math.max(
m.length,
n.length
);
m = m.padStart(len, "0");
n = n.padStart(len, "0");
let carry = 0;
let res = "";
for (let i = len - 1; i >= 0; i--) {
let mBit = +m[i];
let nBit = +n[i];
let sum = mBit + nBit + carry;
carry = Math.floor(sum / 2);
res = (sum % 2) + res;
}
return carry ? "1" + res : res;
};
console.log(sum(str1, str2));
Using Recursive Approach
The recursive approach adds two binary strings by breaking down the problem into smaller subproblems. It handles the binary addition bit-by-bit from the end, carrying over the extra bit when necessary, until the base case where one of the strings is empty.
JavaScript
function addBinary(a, b) {
if (a.length < b.length) [a, b] = [b, a];
if (b.length === 0) return a;
if (a[a.length - 1] === '1' && b[b.length - 1] === '1') {
return addBinary(addBinary(a.slice(0, -1), b.slice(0, -1)), '1') + '0';
}
if (a[a.length - 1] === '0' && b[b.length - 1] === '0') {
return addBinary(a.slice(0, -1), b.slice(0, -1)) + '0';
}
return addBinary(a.slice(0, -1), b.slice(0, -1)) + '1';
}
console.log(addBinary("1010", "1011"));
Using XOR and AND Bitwise Operators
This approach involves using bitwise operators XOR (^) and AND (&) to add two binary strings. The XOR operation helps in summing the bits without carrying over, while the AND operation helps in finding the carry bits. We then shift the carry bits to the left and repeat the process until there are no more carry bits left.
JavaScript
let str1 = "101010";
let str2 = "1011";
let addBinary = (a, b) => {
let x = BigInt(`0b${a}`);
let y = BigInt(`0b${b}`);
while (y !== 0n) {
let carry = x & y;
x = x ^ y;
y = carry << 1n;
}
return x.toString(2);
};
console.log(addBinary(str1, str2));
Using Array Methods for Binary Addition
In this approach, we use array methods to perform binary addition. This involves converting the binary strings into arrays, iterating through them to perform the addition, and handling the carry. This method leverages the power of JavaScript array functions to simplify the process.
JavaScript
function binaryAddition(str1, str2) {
// Ensure str1 is the longer string
if (str2.length > str1.length) [str1, str2] = [str2, str1];
// Convert strings to arrays
let arr1 = str1.split('').reverse();
let arr2 = str2.split('').reverse();
let result = [];
let carry = 0;
// Iterate through the arrays and perform binary addition
for (let i = 0; i < arr1.length; i++) {
let bit1 = parseInt(arr1[i], 10);
let bit2 = i < arr2.length ? parseInt(arr2[i], 10) : 0;
let sum = bit1 + bit2 + carry;
result.push(sum % 2); // Remainder of sum divided by 2
carry = Math.floor(sum / 2); // Integer division of sum by 2
}
// If there's a carry left, add it to the result
if (carry) result.push(carry);
// Convert result array back to string and reverse it
return result.reverse().join('');
}
// Example usage:
let binaryStr1 = "1101";
let binaryStr2 = "1011";
let sum = binaryAddition(binaryStr1, binaryStr2);
console.log(sum); // Output: "11000"