题目描述
写一个函数,求两个整数之和,要求在函数体内不准用+、-、×、÷四则运算符号。
思路
将十进制加法分为三步:
1、各位相加,不进位。
2、计算进位。
3、将前两个结果加起来。
将十进制加法转为二进制加法,结果也是三步走。
1、各位相加,不进位。发现0加0、1加1的结果都是0,0加1、1加0的结果为1。这和异或一致,因此用异或代替。
2、计算进位。只有1加1会出现进位,因此可以将这一步想象成先做与运算,再左移一位。
3、将前两个结果加起来。重复前两步,直到不产生进位为止。
代码:
语言:Java
public class Test47 {
public static void main(String[] args) {
int sum = Add(99,88);
System.out.println(sum);
}
public static 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;
}
}