剑指offer 47:不用加减乘除做加法
程序员文章站
2022-07-10 20:22:32
...
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
- 第一步求出两个异或得出的个位,比如5+7=12 求出2
- 第二步相与然后左移一位,会得到1010,也就是10,但是不能用加法,所以还是要继续
- 用2和10再异或会得到8,再2和10相与再左移一位会得到4,这时候就发现规律了,操作和第一次一样但是得到的两个数如果按照加法仍然是12,所以这时候我们不难猜出,当其中一个数为0的时候另一个数就会为12,也就是原本5+7该返回的数,返回即可
public class Solution {
public int Add(int num1,int num2) {
while( num2!=0 ){
int sum = num1 ^ num2;
int carray = (num1 & num2) << 1;
num1 = sum;
num2 = carray;
}
return num1;
}
}
上一篇: 【python模块】OS模块
下一篇: 华为路由器OSPF配置