首页 > 其他 > 详细

剑指offer-不用加减乘除做加法

时间:2020-06-09 23:15:36      阅读:65      评论:0      收藏:0      [点我收藏+]

 

题目描述

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

 

题目链接:

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;
    }
}

 

剑指offer-不用加减乘除做加法

原文:https://www.cnblogs.com/MoonBeautiful/p/13081615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!