//way1
int add1(int num1,int num2)
{
if (num2== 0)
return num1;
int a = num1^num2;
int b = (num1&&num2 )>> 1;
return add1(a, b);
}
//way2
int 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;
}
不用加减乘除写一个加法函数(位运算)
最新推荐文章于 2021-03-22 17:23:33 发布