Write a function that adds two numbers. You should not use + or any arithmetic operators.
related blog post
function sumTwoNumbers(numA: number, numB: number): number { let binaryNumA = numberToBinary(numA); let binaryNumB = numberToBinary(numB); let binaryResult = sumTwoBinaryNumbers(binaryNumA, binaryNumB); return binaryToNumber(binaryResult); } function numberToBinary(input: number): string { return (input).toString(2); } function binaryToNumber(input: string): number { return parseInt(input, 2); } function sumTwoBinaryNumbers(numA: string, numB: string): string { let arrayLonger = (numA.length > numB.length ? numA : numB).split('').reverse(); let arrayShorter = (numA.length <= numB.length ? numA : numB).split('').reverse(); let arrayResult: string[] = []; let carry = false; arrayLonger.forEach((element, index) => { if (!carry) { if (element === '1' && arrayShorter[index] === '1') { carry = true; arrayResult.push('0'); } else if (element === '0' && (arrayShorter[index] === '0' || arrayShorter[index] === undefined)) { arrayResult.push('0'); } else { arrayResult.push('1'); } } else { if (element === '1' && arrayShorter[index] === '1') { carry = true; arrayResult.push('1'); } else if (element === '0' && (arrayShorter[index] === '0' || arrayShorter[index] === undefined)) { arrayResult.push('1'); carry = false; } else { carry = true; arrayResult.push('0'); } } }); if (carry) arrayResult.push('1'); return arrayResult.reverse().join(""); }