(剑指offer)不用加减乘除做加法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ccnuacmhdu/article/details/84887786

时间限制:1秒 空间限制:32768K 热度指数:83474

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

代码1:

public class Solution {
    public int Add(int num1,int num2) {
        return Integer.sum(num1, num2);
    }
}

代码2:

public class Solution {
    public int Add(int num1,int num2) {
        if(num1 > 0){
            while(num1-->0){
                num2++;
            }
        }else if(num1 < 0){
            while(num1++<0){
                num2--;
            }
        }
        return num2;
    }
}

代码3:

public class Solution {
    public int Add(int num1,int num2) {
        while(num1 != 0){
            int sum = num1 ^ num2;//相加,不考虑进位
            int carry = (num1 & num2) << 1;//仅用于进位
            num1 = carry;
            num2 = sum;
        }
        return num2;
    }
}

猜你喜欢

转载自blog.csdn.net/ccnuacmhdu/article/details/84887786