转载

不用加减乘除做加法

不用加减乘除做加法

题目

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

思想

不能用加减乘除,只好用位运算了

两数异或可以求出两数不带进位的和(7 ^ 10 = 13)

两数相与再左移一位可以求出两数的进位( (7 & 10) << 1 = 4)

循环直到进位为0,既可以出结果

代码

public class Solution {
    public int Add(int num1,int num2) {
        int tempOne = 0, tempTwo = 0;

        do {
            tempOne = num1 ^ num2;
            tempTwo = (num1 & num2) << 1;

            num1= tempOne;
            num2 = tempTwo;
        } while(num2 != 0);

        return num1;
    }
}
正文到此结束
本文目录