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

来源:互联网 发布:linux ext3 ext4 区别 编辑:程序博客网 时间:2024/06/06 10:51

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

        

#include <iostream>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)<<endl;    return 0;}
        add函数中,其中a&b是取a与b相同位的一半,再左移一次<<之后就是a与b相同位的一半的两倍了,而a^b是取a和b的不同位,这个时候相当于不变,将其相加即为将a和b的相同位与不同位都加在一起,即实现了两个数相加,其中还考虑到了进位的情况。不过不足的是使用了循环,比较麻烦。

阅读全文
0 0
原创粉丝点击