题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:因为不能用加减乘除,所有很容易想到转到位运算。
a^b //不带进位加
a&b //看哪几位有进位,进位左移一位,所以需要(a&b)<<1
- 递归
int Add(int a, int b)
{
if (b == 0){
return a;
}
int sum=a^b;
int carry=(a&b)<<1;
return Add(sum,carry);
}
- 循环
int Add(int a,int b)
{
int sum=a;
int carry=b;
while(b!=0){
sum=a^b;
carry=(a&b)<<1;
a=sum;
b=carry;
}
return sum;
}
本文介绍了一种不使用常规算术运算符实现两整数相加的方法,通过位运算进行加法运算,提供了递归和循环两种实现方式。
1221

被折叠的 条评论
为什么被折叠?



