题目
给定两个int变量a、b,要求返回两者之和,但不准使用运算符+和-。
算法
这个题目不准使用运算符,那就只能通过位操作来模拟加减运算了。
1. a和b相与,能得出产生进位的地方carry
2. a和b相异或,能得到本次加法结果
3. b=carry<<1,作为下一个循环的加数
代码
private int getSum(int a,int b){
int carry=0;
while (b!=0){
carry=a&b;
a=a^b;
b=carry<<1;
}
return a;
}
关于此文章
本文首发于作者的个人博客stormlin.com。你也扫描以下二维码来关注我的个人微信公众号来获取更多更新鲜的内容哦。