您的位置:首页 > 编程语言 > C语言/C++

371. Sum of Two Integers

2016-06-30 15:57 225 查看
不用考虑正负数的问题,因为负数在计算机中用补码表示,所以用正常的加法规则计算即可!

算法参考:(计算机加法的实现)http://www.cnblogs.com/kiven-code/archive/2012/09/15/2686922.html

class Solution {
public:

int getSum(int a, int b) {
int x,y,icarry=0;
int result=0;

//位二进制加法,icarry进位标志
for(int n=0;n<32;n++){
//取a,b的末位
x=a&1;
y=b&1;
int bit=0;
bit=(x^y)^icarry;
icarry=(x&y)|(y&icarry)|(icarry&x);
if(bit==1)
result=result|(1<<n);//倒数第n位置1

//a,b各右移一位
a=a>>1;

b=b>>1;
}
return result;
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ leetcode