在 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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP