码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:不用加减乘除做加法   进制   practice   tpi   com   ret   span   四则运算   二进制   

 

题目描述

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

 

题目链接:

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-不用加减乘除做加法

标签:不用加减乘除做加法   进制   practice   tpi   com   ret   span   四则运算   二进制   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!