题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
知识点:
-
解题思路:
这道题给我们两个数,要求我们在不使用四则运算符号的前提下计算两个数的和
- 首先我们需要明白对于两个数来说其和分为两部分,一部分是不进位的和,一部分是进位的和
- 不进位的和我们可以通过a ^ b来得到,我们要知道异或的特点是相同为0,不同为1
- 而进位的值我们可以通过 a & b << 1来得到
- 我们不断的将两者得到的值重复上述的运算,最后进位为0便好
解题代码:
function Add(num1, num2)
{
// write code here
let a = num1 ^ num2; // 不进位的和
let carry = num1 & num2;
while(carry) {
carry = carry << 1; // 注意是向右移动
let temp = a;
a = a ^ carry;
carry = temp & carry;
}
return a;
}