位运算实现两个整数的加法运算

        在程序员面试宝典中,看到了这个知识点,在这里记录一下实现代码。

        

#include 

using namespace std;
int add(int a,int b)
{
    if(b==0) return a;
    int sum,carry;
    sum=a^b;
    carry=(a&b)<<1;
    return add(sum,carry);
}
int main()
{
    int a,b;
    cin>>a;
    cin>>b;
    cout<
        add函数中,其中a&b是取a与b相同位的一半,再左移一次<<之后就是a与b相同位的一半的两倍了,而a^b是取a和b的不同位,这个时候相当于不变,将其相加即为将a和b的相同位与不同位都加在一起,即实现了两个数相加,其中还考虑到了进位的情况。不过不足的是使用了循环,比较麻烦。

你可能感兴趣的:(编程)