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

    技术2022-07-11  101

    题目

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

    需要掌握

    1、异或运算 两个数不相同,结果为1。两个数相同,结果为0。 2、与运算 两位同时为“1”,结果才为“1”,否则为0 3、左移 将一个二进制操作数对象按指定的移动位数向左移,左边溢出的位数被丢弃,右边的空位用0补充。 4、计算机二进制加法运算:

    思路

    第一步

    将两个数进行异或运算,此时得到的结果相当于不进位进行的加法运算

    第二步

    将两个数进行与运算,并将其结果进行左移得到最后的结果

    第三步

    将第一步的结果与左移后的结果进行异或得到的最终结果为终值

    第四步

    重复操作,直到当与运算的结果为0,则异或运算的结果则为两个加数的和所对应的二进制数

    代码

    class Solution { public: int Add(int num1, int num2) { while (num1 != 0) { int add = (num1^num2); num1 = (num1&num2) << 1; num2 = add; } return num2; } };
    Processed: 0.014, SQL: 9