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

【剑指offer】不用加减乘除做加法

时间:2019-09-26 12:08:39      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:order   block   code   return   加法   col   add   none   pre   

题目描述

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

分析:看到这种题目,就知道应该采用位运算

两个数异或,相当于这两个数的每一位相加,但是不考虑进位

两个数相与,并且左移一位,相当于求得进位

然后将上面两步的结果相加,就是结果

int Add(int a, int b)
{
    if(a==0)
       return b;
    if(b==0)
        return a;
    int x=a^b;       //两个数异或:相当于每一位相加,而不考虑进位
    
    int y=(a&b)<<1;  //两个数相与,并且左移一位:相当于求得进位
    
    return Add(x,y); //将上述两步的结果相加
}

【剑指offer】不用加减乘除做加法

标签:order   block   code   return   加法   col   add   none   pre   

原文地址:https://www.cnblogs.com/yinbiao/p/11589634.html

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