不用加减乘除做加法

问题

  写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

分析

  假设两个整数a=5和b=17,对应的二进制位101和10001。

  1. 首先将a和b进行异或运算(作用是,忽视进位),a^b = 10100

  2. 然后将a和b进行与运算,并将结果向左移一位,(a&b)<<1=00010

  3. 当没有进位时,结束循环

代码

 1     public static int add(int x, int y){
 2         int a = x^y, b = (x&y)<<1;
 3         while(b!=0){
 4             x = a^b;
 5             y = (a&b)<<1;
 6             
 7             a = x;
 8             b = y;
 9         }
10         return a;
11     }
原文地址:https://www.cnblogs.com/jiqianqian/p/6953721.html