标签:操作 加法 整数 turn a+b usb return stat 相加
描述
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
1、 采用二进制进行加法操作
2、 a ^ b ; 相异为1-->二进制不进位的结果;即0+1=1,1+0=1,0+0=0
3、 (a & b ) << 1 ; (a & b)二进制相同位都是1则该位为1,即1+1 = 10,需要进位则右移一位-->二进制进位的结果
4、 递归调用(2步 + 3步)
好了,我们跟着思路实现一下
public static int aplusb(int a , int b) {
if(a == 0 ) {
return b;
}
if(b == 0 ) {
return a;
}
int i , j;
i = a^b;//不进位得到的结果
j = (a&b)<<1;//进位得到的结果
//继续相加
return aplusb(i , j);
}
public static int aplusb2(int a , int b) {
int temp;
while(a != 0 && b != 0 ) {
temp = a ^ b;
b = (a & b) << 1;
a = temp;
}
return a == 0 ? b : a;
}
标签:操作 加法 整数 turn a+b usb return stat 相加
原文地址:https://www.cnblogs.com/qjmnong/p/9102785.html