算法:不用加减乘除做加法
题目要求:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
首先很容易想到位运算
1 class Solution { 2 public: 3 int Add(int num1, int num2) 4 { 5 int i,j; 6 while(num2){ 7 i=num1^num2; 8 j=(num1&num2)<<1; 9 num1=i;num2=j; 10 } 11 return num1; 12 } 13 };
以6(110)和7(111)为例:
num1^num2 表示加法时不进位得到的数,001
(num1&num2)<<1表示进位的数,1100
再对他们相加就可得到两数之和,1101。