题目描述

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

 

题目链接:

https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&rp=1&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking

 

 

分析:

二进制加法。

相加 :  0^1=1

进位 : 1&1=1,得到的数值左移一位,re<<=1  

 

public class Solution {
    public int Add(int num1,int num2) {
        //二进制加法
        // 0^1 = 1
        int re = num1 ^ num2;
        // 1&1 = 1,说明需要向左进1,所以<<一位
        int tmp = num1 & num2;
        //直到没有需要进位的二进制位
        while(tmp != 0){
            tmp<<=1;
            int a = re ^ tmp;
            int b = re & tmp;
            re = a;
            tmp = b;
        }
        return re;
    }
}

 

posted on 2020-06-09 22:59  MoonBeautiful  阅读(159)  评论(0编辑  收藏  举报