在 JavaScript 中不转换地添加二进制数

javascriptweb developmentfront end technology

问题

我们需要编写一个 JavaScript 函数,该函数将两个二进制字符串 str1 和 str2 作为第一个和第二个参数

我们的函数应该返回两个二进制数的总和。我们不能将二进制数转换为十进制,然后相加,并且结果的总和不应该包含任何零。

例如,如果函数的输入是 −

输入

const str1 = '1101';
const str2 = '10111';

输出

const output = '100100';

示例

以下是代码 −

const str1 = '1101';
const str2 = '10111';
const addBinary = (str1 = '', str2 = '') => {
   str1 = str1.split('').reverse();
   str2 = str2.split('').reverse();
   let res = '', temp = 0;

   while (str1.length || str2.length || temp) {
      temp += (~~str1.shift()) + (~~str2.shift());
      let mod = temp % 2;
      res = mod + res;
      temp = temp > 1;
   };
   return (+res) ? res.replace(/^0+/, '') : '0';
};
console.log(addBinary(str1, str2));

输出

100100

相关文章