利用 位运算 :两个数相加 A+B

规律来源:
(1): 0+0=0;
(2):0+1=1;
(3):1+0=1;
(4) : 1+1=10;

A^B 对每一位进行异或操作:
A&B 用来存储进位;

从而可以:A+B可以先转化为A^B和A&B两个值,由于A&B是进位值,因此需要整体向前移动一位才算进位,如此一来就得到加法的第一步转化公式:
A+B=A^B+(A&B)<<1;

根据以上规律编写代码:

public class Solution {
    /**
     * @param a: An integer
     * @param b: An integer
     * @return: The sum of a and b 
     */
    public int aplusb(int a, int b) {
        // write your code here
        
        if(a==0){
            return b;
        }
        if(b==0){
            return a;
        }
        int x = a^b;
        int y= a&b;
        y=y<<1;
        return aplusb(x,y);
    }}

你可能感兴趣的:(利用 位运算 :两个数相加 A+B)