题目链接:不用加减乘除做加法
题意:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
题解:计组里面有一个加法器。。用异或和与即可完成加法操作。异或求加法,与计算进位。
第一步:异或相加;第二步:计算进位值,位与;第三步,重复以上两步。
举例:
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 };