1.不用加减乘除实现求两个整数之和。
思路:
位运算中异或是不进位的加法,与的结果左移一位就是只进位的加法,那么拿两个数一直加,直到没有进位为止,则得到两个数相加的结果。
代码实现如下:
public static int add(int a,int b) {//加法
int sum;
int cand;
while(b!=0) {
sum=a^b;
cand=(a&b)<<1;
a=sum;
b=cand;
}
return a;
}
2.不用加减乘除实现求两个整数之差
思路:
两个数只差可以理解为第一个数加上第二数的相反数,那么第二数就可以通过位运算中的取反得到它的相反数。
代码实现如下:
public static int sub(int a,int b) {//减法
b=~b+1;
return add(a,b);
}
所以减法实现也相当于加法。