题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路
- 依靠位运算,其实真的很巧妙对于+运算,难点其实就在进位运算;
(101+10001)不考虑进位就是=10100;就是异或运算,只有一个1一个0才等于1;然后考虑进位,两个都是1才可能产生进位;也就是与运算;然后在左移一位即可;
代码
static public int Add1(int num1,int num2)
{
int sum;
int carry;
while (num2!= 0)
{
sum =num1 ^num2 ; //异或,不算进位的结果
carry = (num1 & num2) <<1; //两个都是1就会进位,然后右移一位;
num1 = sum;
num2 = carry; //进位如果不是零就可以跳出了
}
return num1;
}
收获
- 奇特的加法运算;