在 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));
解释
可以通过对两位进行异或(^)来获得两位的和。并且可以通过执行两位的AND(&)来获得进位位。
我们在这里使用了半加器逻辑的扩展版本,该逻辑可用于添加2个单个位以添加两个整数。如果x和y没有设置相同的position(s)位,则x和y的按位异或(^)给出x和y的总和。
为了合并公共设置位,还使用了按位与(&)。x和y的按位AND给出所有进位位。我们已经计算了(x&y)<<1并将其添加到x^y以获得所需的结果。
输出结果
控制台中的输出将是-
100