一、题目
写一个函数,求两个整数之和,要求在函数体内不得使用 + 、 - 、* 、/ 四则运算符号。
二、分析及代码
1. 二进制运算
(1)思路
将两个整数转换为二进制处理,可以通过位运算取代所需的四则运算。具体步骤包括:
1)对各位上的数字进行异或处理,即直接相加,不考虑进位;
2)对各位上的数字进行与处理,即考虑进位;
3)将前两步得到的数字用上述方法继续相加,直至不产生进位。
(2)代码
public class Solution {
public int Add(int num1,int num2) {
int sum = num1 ^ num2;
int carryBit = (num1 & num2) << 1;
while (carryBit != 0) {
int preSum = sum;
sum = preSum ^ carryBit;
carryBit = (preSum & carryBit) << 1;
}
return sum;
}
}
(3)结果
运行时间:9 ms,占用内存:9376 k。
三、其他
暂无。