思路:模拟硬件加法器的实现,两个bit位相加,当前位结果为:a^b^c(c为上位的输入)
进位:(c&(a^b))^(a^b),至于原因,请参考一下全加器
public class Solution {
public int getSum(int a, int b) {
int result = 0;
int tmp = 1;
int prev = 0;
for(int i = 0;i<32;i++){
int tmpA = (a & tmp)>>i;
int tmpB = (b & tmp)>>i;
int tmpRes = tmpA ^ tmpB ^ prev;
prev = (prev & (tmpA ^ tmpB)) ^ (tmpA & tmpB);
result |= tmpRes << i;
tmp = tmp << 1;
}
return result;
}
}