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

}

全部评论

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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