在 JavaScript 中不使用 '+', '-', '/', '*' 查找两个数字的和


我们需要编写一个 JavaScript 函数 add(),它接收两个数字 m 和 n 作为输入。该函数应该在不使用四则运算的情况下将这两个输入数字相加并返回它们的和。

示例

代码如下:

 在线演示

const m = 67, n = 33;
const add = (x, y) => {
   while(y !== 0){
      let carry = x & y;
      x = x ^ y;
      y = carry << 1;
   };
   return x;
};
console.log(add(m, n));

解释

两个比特的和可以通过对这两个比特执行异或(^)运算来获得。而进位比特可以通过对两个比特执行与(&)运算来获得。

这里我们使用了半加器逻辑的扩展版本,该逻辑可以用于将两个单个比特相加以添加两个整数。如果 x 和 y 在相同的位置没有设置比特,则 x 和 y 的按位异或(^)运算给出 x 和 y 的和。

为了合并常见的设置比特,也使用了按位与(&)运算。x 和 y 的按位与运算给出所有进位比特。我们计算了 (x & y) << 1 并将其添加到 x ^ y 以获得所需的结果。

输出

控制台中的输出将是:

100

更新于: 2021年3月3日

813 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.