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

题目链接:不用加减乘除做加法


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

 

题解:计组里面有一个加法器。。用异或和与即可完成加法操作。异或求加法,与计算进位。

第一步:异或相加;第二步:计算进位值,位与;第三步,重复以上两步。

举例:

7 + 4 = 11

1、111 ^ 100 = 011   0111 & 0100 = 0100<<1 = 1000 有进位

2、0110 ^ 1000 = 1011 0011 & 1000 = 0000<<1= 0 无进位  得到结果1011

 

代码:

1 class Solution {
2 public:
3     int Add(int num1, int num2)
4     {
5         return num2 ? Add(num1 ^ num2,(num1 & num2) << 1) : num1;
6     }
7 };
原文地址:https://www.cnblogs.com/Asumi/p/12417121.html