【剑指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 };

 

posted @ 2020-03-04 23:57  甜酒果。  阅读(142)  评论(0编辑  收藏  举报