C/C++_2019_7_31(不用加减乘除做加法)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44770155/article/details/100585764

成熟不过就是学会了和自己握手言和。

题目描述

不用加减乘除做加法 | 时间限制:1秒 | 内存限制:32768K | 语言
限制:[Javascript_V8, Python,C++, Javascript, Php, C#, Java]
写一个函数,求两个整数之和,要求在函数体内不得使用 + 、 - 、*、 / 四则运算符号。

题目解析

不使用 + 运算符进行加法运算;

解题思路

数字的相加可以转换为二进制的加法,注意每一位相加与进位即可;
两个数异或:相当于每一位相加,而不考虑进位;

示例代码

class Solution {
public:
	int Add(int num1, int num2) {
		while (num2 != 0){
			int sum = num1 ^ num2;		     //得到相加后不包含进位的数据
			int carray = (num1 & num2) << 1; //得到两数相加的进位
			num1 = sum;						 //两个结果相加,直到进位为0
			num2 = carray;
		}
		return num1;
	}
};

猜你喜欢

转载自blog.csdn.net/qq_44770155/article/details/100585764