Skip to content

Latest commit

 

History

History
44 lines (35 loc) · 1.3 KB

65-不用加减乘除做加法~Easy.md

File metadata and controls

44 lines (35 loc) · 1.3 KB

不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。

数据范围

  • −1000≤num1,num2≤1000

样例

输入:num1 = 1 , num2 = 2

输出:3

思路:

  1. 初始化:函数接收两个整数a和b作为输入。
  2. 循环:使用while循环,条件是b不等于0。只要存在进位,循环就会继续。
  3. 求和:使用按位异或运算符^来计算a和b的和,不包括任何进位。这个结果赋值给临时变量temp。
  4. 处理进位:使用按位与运算符&来计算a和b中的进位部分,然后将这个结果左移一位(<< 1),以便将进位移动到正确的位上。这个结果赋值回b。
  5. 更新求和结果:将temp赋值回a,这样a就包含了当前位的和,但不包括进位。
  6. 循环结束:当b变为0时,表示已经没有进位,循环结束。
  7. 返回结果:返回a作为最终的求和结果。
/**
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var add = function (a, b) {
  while (b !== 0) {
    // 求和时不考虑进位,使用按位异或操作
    let temp = a ^ b;
    // 计算进位,使用按位与操作并且左移一位
    b = (a & b) << 1;
    // 更新求和结果
    a = temp;
  }

  return a;
};