http://z466459262.iteye.com/blog/1131609
题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。
用位运算:1.使用半加运算,计算出不进位相加的结果
2.只有两个1在一起才会进位,那么确定哪些位置有两个1,然后移位,再进行不进位相加;
循环进行不进位相加。。。。。
public static int addWithoutArithmetic(int num1, int num2)
{
if(num2 == 0) //如果num2为0,说明没有进位了
return num1;
int sum = num1 ^ num2;
System.out.println(num2 + "---" + sum) ;
return addWithoutArithmetic(sum, (num1 & num2) << 1);
}
比如 13 + 13
int sum = 13 ^ 13 = 1101 ^ 1101 = 0 ;
num1 & num2 = 13 &13 = 1101 & 1101 = 1101
1101 << 1 = 11010 = 16 + 8 + 2 = 26