利用 位运算 :两个数相加 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);
    }}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。