程序员面试(1):利用位运算完成两个整数的加法运算

来源:互联网 发布:程序设计导论 python 编辑:程序博客网 时间:2024/06/04 19:11

利用位运算计算两个整数的加法运算

解析:对于整数x和y,其二进制中相同位,若值相同(同时为1或者0),则通过x&y可以求出其平均值(1或者0),在左移1位,则获得其和;若值不同(一个为1,一个为0),通过x^y获得其值,为其和的值;然后,把这两种情况的值相加,则为x和y的和;
旧版本:

int Add(int a, int b){    if(a==0 || b==0)         return a|b;    else        return ((a&b)<<1) + a^b;}

上述代码有错,因为代码要用位运算实现两个整数的加法,所以,不能出现x+y这种。
新版本:

int Add(int a, int b){    if(a==0 || b==0)         return a|b;    int sum, carry;    sum = a ^ b;    carry= (a & b) << 1;    return Add(sum, carry);}