不用加减乘除写一个加法函数(位运算)

来源:互联网 发布:数据趋势分析 编辑:程序博客网 时间:2024/06/02 01:29
//way1int add1(int num1,int num2){    if (num2== 0)        return num1;    int a = num1^num2;    int b = (num1&&num2 )>> 1;    return  add1(a, b);}//way2int add2(int num1, int num2){    int sum = 0;    int carry=0;    do{        sum = num1^num2;//不考虑进位对每一位相加,这和异或的结果是一样的        carry = (num1&&num2) >> 1;//考虑进位,只有1+1时才产生进位(1+0,0+0均不产生进位,                               //进位可以转换成两个二进制相与的结果),右移一位,继续看进位情况        num1 = sum;                       num2 = carry;   //重复以上的步骤    } while (num2 != 0);    return num1;}
原创粉丝点击