题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
分析:
位运算法,对两个数字进行位异或运算的结果即为不考虑进位的情况下的求和,而对两个数字进行与运算后左移一位即为进位值,两者相加,直到后者为 0 即不存在进位。
求解:
// 位运算
function add(a: number, b: number): number {
while (b) {
// 直到 第二个加数 变成 0,即没有进位值
// 异或求和得到不考虑进位的结果值
const current = a ^ b;
// 与运算后,左移一位得到的是进位值
b = (a & b) << 1;
// 更新 a
a = current;
}
return a;
}