赞
踩
不使用运算符 + 和-,计算两整数a 、b之和。
示例:
若 a = 1 ,b = 2,返回 3。
这道题实际上就是在考 计算机底层是如何实现加减法的。
很明显计算机本身是不动+ - 的,它的底层是通过 异或 和 与 两个位运算来实现的,异或 是不带进位的结果, 与 是进位。
“
class Solution {
public int getSum(int a, int b) {
//位运算实现加减法
int res = 0;
//不进位的加和
int xor = a^b;
//进位和
int forward = (a&b)<<1;
if(forward != 0){
res = getSum(xor,forward);//循环处理 进位和+不进位加和
}else {
res = xor;
}
return res;
}
}
“`
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。