/*
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
剑指offer思路:位运算
分三步:不进位加,相当于异或
计算进位,相当于与之后再左移一位
第一步和第二部结果相加,相加过程同前两步,直到不产生进位为止
*/
class Add
{
public static int add(int num1,int num2) {
int sum=num1^num2;//不进位加
int carry=(num1&num2)<<1;//计算进位
if (carry!=0)//有进位则将sum和进位相加
{
return add(sum,carry);
}
return sum;
}
//相关问题:不使用中间变量,交换两个数
public static void swap(int n1, int n2)
{
//基于加减法
a=a+b;
b=a-b;
a=a-b;
//基于异或运算
b=a^b;
a=a^b;
b=a^b;
}
public static void main(String[] args)
{
System.out.println(add(4,5));
}
}
剑指offer_不用加减乘数做加法
最新推荐文章于 2017-09-07 11:58:00 发布