题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:两个数的和为Si = Xi 异或 Yi 异或 Ci(Ci为进位),异或我们可以用^来计算,如果计算进位,以及计算完进位之后如何再继续计算是我遇到的问题。
1.求两个数的异或值
2.两个数相与,再左移一位就是进位
3.如果进位为0,那么计算得到的异或值即为最终结果,否则说明仍然有进位,需要继续1 2 步骤
class Solution { public: int Add(int num1, int num2) { int numyu = -1; int numyh = -1; while(num2){ numyh = num1 ^ num2; numyu = (num1 & num2) << 1; //进位 num1 = numyh; num2 = numyu; } return num1; } };