写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号`在这里插入代码片`。
思路:位运算
1.两个数相异或:相当于没一位相加(不考虑进位);
2.两个数相与并左移1位:相当于求得进位;
3.将上述两个步骤相加。
代码:
package offer;
public class JZ48 {
public static int add(int num1,int num2) {
int a,b;
//进位为零,跳出循环
while(num1 != 0) {
a = num1 ^ num2;//不考虑进位,相加时直接异或
b = (num1 & num2) << 1;//保留两个加数的进位
num1 = b;
num2 = a;
}
return num2;
}
public static void main(String[] args) {
System.out.println(add(10,20));
}
}
剑指offer.JZ48不用加减乘除做加法
最新推荐文章于 2021-06-05 18:42:30 发布