剑指Offer第四十八题:不用加减乘除做加法

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

思路:
先找出两个数的二进制相加不需要进位的位置:a^b
在找出相加需要进位的位置:a&b,然后再左移一位;
现在a+b=(a&b<<1)+a^b;
循环。。。
直到两个数没有a&b<<1==0,此时a^b就是a+b;

public class Q_48 {

public int Add(int num1,int num2) {
    while (num2!=0) {
        int temp = num1^num2;
        num2 = (num1&num2)<<1;
        num1 = temp;
    }
    return num1;
}

}

全部评论

相关推荐

erer__:我也挺晚的,10月23号才开始投递。然后11月12号才有第一次面试。日常实习挺看运气的,要看有没有岗位。感觉到后面可能岗位会更少了,不过多投吧。加油
投了多少份简历才上岸
点赞 评论 收藏
分享
2025-12-30 14:09
已编辑
北京交通大学 算法工程师
字节跳动 训练框架研发 (N+2) * (12 + 3) 硕士211
Crinton:训练框架遥遥领先
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务