1.不用加减乘除做加法
解法:分为三步①各位相加不进位,即先按位异或;②做进位,按位与并左移位;③结果相加,直至没有进位
int add(int num1, int num2)
{
int sum, carry;
do
{
sum = num1 ^ num2;//先按位异或
carry = (num1 & num2) << 1;//按位与并左移位
num1 = sum;
num2 = carry;
}while(num2 != 0);//结果相加,直至没有进位
return num1;
}
2.不使用新变量,交换变量的值
解法一:
a = a ^ b;
b = a ^ b;
a = a ^ b;
解法二:
a = a + b;
b = a - b;
a = a - b;
持续更新中。。。