版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ghscarecrow/article/details/82083859
此题出自牛客网的剑指offer专题
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
解题思路
这道题要求在函数体内不得使用+、-、*、/四则运算符号,第一反应就是使用位运算。具体的位运算实现加法的思路可以参考一下我之前写的一篇总结https://blog.csdn.net/ghscarecrow/article/details/79944305
代码如下
Java版本
/*
num1存储两数相加之后的结果
num2存储两数的进位
temp用来两数之和(不含进位)
*/
public class Solution {
public int Add(int num1,int num2) {
int temp=0;
//当num2为0时代表没有进位了
while(num2!=0){
temp = num1 ^ num2;
num2 = (num1&num2)<<1;
num1 = temp;
}
return num1;
}
}
C++版本
/*
对于该题,我们采用位运算来实现加法功能,
temp 用来存储“和”
num2用来存储进位
num1用来存储结果
*/
class Solution {
public:
int Add(int num1, int num2)
{
int temp;
while(num2)//当num2为0时则表示没有进位了
{
temp = num1 ^ num2;
num2 = (num1&num2)<<1;
num1 = temp;
}
return num1;
}
};