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

题目描述:

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

思路:

按位操作,不考虑进位时,结果为按位异或,单独考虑进位,结果为按位与左移一位。重复直到进位为0。

代码:

class Solution {
public:
    int Add(int num1, int num2) {
        int sum = num1 ^ num2;
        int jin = (num1 & num2) << 1;

        while(jin != 0) {
            int temp = sum ^ jin;
            jin = (sum & jin) << 1;
            sum = temp;
        }
        return sum;
    }
};

猜你喜欢

转载自blog.csdn.net/iCode_girl/article/details/88423098