不用加减乘除做加法

int add(int a,int b)
{
    if(a==0)
        return b;
    if(b==0)
        return a;
    int m=a^b;         // 二进制加法,应当是异或加上与运算
    int n=a&b;
    n=n<<1;
    if(m&0x1==1) // 为了防止两个数都不收敛于零。事实证明,完全可以收敛
    {
        m=m&~0x1;
        return 0x1|add(m,n);
    }
    return add(m,n);
}

 

posted on 2013-07-26 21:18  dyc0113  阅读(119)  评论(0编辑  收藏  举报

导航