public class Test { //利用位运算计算加法 public static void main(String[] args) throws Exception{ int a=2; int b=2; System.out.println( getSum(a,b)); } public static int getSum(int x, int y) { if(y==0) { return x; } //没有进位时完成运算 int sum,carry; sum=x^y; carry=(x&y)<<1; return getSum(sum,carry); //递归相加 } }
位运算实现整数加法本质就是用二进制进行运算。
其主要用了两个基本表达式:
-
x^y //执行加法,不考虑进位。
-
(x&y)<<1 //进位操作
令x=x^y ;y=(x&y)<<1 进行迭代,每迭代一次进位操作右面就多一位0,最多需要“加数二进制位长度”次迭代就没有进位了,此时x^y的值就是结果。