先将两个数按二进制规则不考虑进位,直接相加,相当于按位异或
?
?
然后计算进位,相当于按位与
?
?
然后当不存在进位的时候计算完成
?
?
如果存在进位那么将进位和没有算进位的sum再继续计算
?
?
?
?
package add47;
?
?
public class Add47 {
static int add(int n1,int n2){
int sum=0;
int carry=0;
do {
sum=n1^n2;
carry=(n1&n2)<<1;
n1=sum;
n2=carry;
} while (n2!=0);
return sum;
?
?
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2, 3));
}
?
?
}
时间: 2024-10-21 12:36:53