《剑指offer》不用加减乘除做加法

【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路题目要求不用四则运算,那么我们能够想到的也就只有位运算了,那么我们怎么使用位运算来计算加法呢?首先我们看,两数相加不进位的情况,这其实就是两个数异或的值。而我们接下来就得计算进位了,我们知道二进制中只有同为1的时候才需要进位,而同为1的话,,我们只有通过&运算来取得。得到了上述的结论之后,我们就可以知道,整个加法的过程就是两个数的异或和相与并左移的一个过程了。

class Solution{public:int Add(int num1, int num2){int sum,carry;do{sum = num1^num2;carry = (num1&num2)<<1;num1 = sum;num2 = carry;}while(num2);return num1;}};

版权声明:本文为博主原创文章,如果转载,请注明出处

最快乐的时候,就是去旅行。

《剑指offer》不用加减乘除做加法

相关文章:

你感兴趣的文章:

标签云: