不用加减乘除做加法
题目
思路
首先我们要弄清楚10进制的加法
例:5+7
第一步:5+7在个位上等于2,然后再往十位上进了一位
第二步: 个位上的数加上十位上进的数2+10=12
答案为12
所以我们也可以用类似方式来实现2进制的加法
- 计算相加等于多少(不考虑进位)
(num1^num2)
解释: 相同时是1,1或者0,0. 不考虑进位是都等于0
2.计算进位的数
(num1&num2)<<1
各位做与然后向左移动一位
3.相加
代码实现
int Add(int num1, int num2 ) {
// write code here
while(num2!=0)
{
int tem=num1^num2;//未进位的相加
num2=(num1&num2)<<1;//要进的数
num1=tem; //下一次要与num2相加的数
}
return num1;
}