本文主要是介绍leetcode371 Sum Of Integers 不用加法计算两个整数的和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
解法
思路:
首先不能用”+”、” - “符号,那么计算两个数的和也就只能用“位运算符”。位运算符是处理二进制数的,先想想十进制的怎么进行加法的。
比如3+18=21。 首先个位相加3+8 = 11,个位是1,有进位。进位再与十位相加得到十位是2。
二进制也一样,如果不考虑进位,那么1+0=1、1+1=0、0+0=0 这个结果是和“异或”(^)位运算符的处理结果是一样的。之后处理进位问题,有且仅有1+1的情况下才会产生进位,所以用“&”位运算符来处理进位情况,运算之后向左移一位(<<)即可。
代码:
public int getSum(int a, int b) {if(b == 0) return a;return getSum(a^b, (a&b)<<1);}
这篇关于leetcode371 Sum Of Integers 不用加法计算两个整数的和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!