不用加减乘除做加法

不用加减乘除做加法

http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215

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

十进制两个数相加可以进行分解为三个步骤:
1、各位的值进行相加,不算进位的值
2、计算进位的值
3、如何两者相加即为和
栗子:3 + 2 即:011 + 010 第一步的值:3^2=001, 第二步的值:(3&2)<<1=100,第三步:001+100=101,即为5,故3+2=5;
结果这一次操作,3+2,转换成了 4+1,两者的结果都是5。

所以说:我们以下算法的目的,就是不断重复上述操作,直到转换成5+0,也就是进位为0的时候
第一步的值就是最终的结果。
*/
class Solution {
public:
int Add(int num1, int num2)
{
int temp;
while(num2!=0)
{
temp=num1^num2;//相加各位的值,不算进位
num2=(num1&num2)<<1;//进位的值
num1=temp;//num1等于temp,继续重复上述操作直到进位为0,那么最终的和就为num1
}
return num1;
}
};

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务