题目描述:

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

知识点:

  • 位运算

    解题思路:

  • 这道题给我们两个数,要求我们在不使用四则运算符号的前提下计算两个数的和

  • 首先我们需要明白对于两个数来说其和分为两部分,一部分是不进位的和,一部分是进位的和
  • 不进位的和我们可以通过a ^ b来得到,我们要知道异或的特点是相同为0,不同为1
  • 而进位的值我们可以通过 a & b << 1来得到
  • 我们不断的将两者得到的值重复上述的运算,最后进位为0便好

解题代码:

  1. function Add(num1, num2)
  2. {
  3. // write code here
  4. let a = num1 ^ num2; // 不进位的和
  5. let carry = num1 & num2;
  6. while(carry) {
  7. carry = carry << 1; // 注意是向右移动
  8. let temp = a;
  9. a = a ^ carry;
  10. carry = temp & carry;
  11. }
  12. return a;
  13. }