剑指offer-第六章面试中的各项能力(不用加减乘除做加法)
//不用加减乘除四则运算,来做加法 //题目:两个数做加法。 //思路:用二进制的位运算的思路。第一步:首先两数相加考虑进位。可以用异或。 //第二步:两个数相加只考虑进位,并将最后的结果左移.第三步:将第一二步的结果相加。 public class AddN { public int add(int a,int b){ //递归实现 int sum1=a^b; int sum2=(a&b)<<1; if(sum2!=0){ return add(sum1,sum2); } /*循环实现 * int sum1,sum2; do{ sum1=a^b; sum2=(a&b)<<1; a=sum1; b=sum2; }while(b!=0);*/ return sum1; } public static void main(String[] args){ AddN add=new AddN(); int sum=add.add(-1, 40); System.out.println(sum); } }