[编程题]不用加减乘除做加法。写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

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

1.使用++,- -运算符

class Solution 
{
public:
	int Add(int num1, int num2)
	{
		if (num1 > 0)
		{
			while (num1--)
				num2++;
		}
		else 
		{
			while (num1++)
				num2--;
		}
		return num2;
	}
};

2.使用位运算

class Solution 
{
public:
	int Add(int num1, int num2)
	{
		while (num2 != 0) 
		{
			int temp = num1 ^ num2;
			num2 = (num1 & num2) << 1;
			num1 = temp;
		}
		return num1;
	}
};
class Solution 
{
public:
	int Add(int num1, int num2)
	{
		return num2 ? Add(num1 ^ num2, (num1 & num2) << 1) : num1;
	}
};
class Solution 
{
public:
	int Add(int num1, int num2)
	{
		if (num2 == 0)
			return num1;
		return Add(num1 ^ num2, (num1 & num2) << 1);
	}
};
发布了70 篇原创文章 · 获赞 131 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43239560/article/details/103426563