Sum of Two Integers
Posted 白常福
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sum of Two Integers相关的知识,希望对你有一定的参考价值。
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.
分析:不通过四则运算符号完成求和;
思路:很明显只能通过二进制的位运算来完成。这里查看一篇博客。
https://ych0112xzz.github.io/2016/10/27/OperationwithBits/
简述加法的原理:
二进制数求和的过程可以分解为对应位数直接相加再加上相对应的进位。
1,直接相加用异或可以完成:
0101+0101=0000
0101^0101=0000
2,进位可以用(a&b)<<1完成:
0101+0101=1010
(0101&0101)<<1=1010
第一和第二部的结果相加只需要重复一次步骤1即可。对于多次进位,把条件设置为当步骤二结果为0是结束。
JAVA CODE
class Solution { public int getSum(int a, int b) { return b == 0 ? a : getSum(a ^ b, (a & b) << 1); } }
以上是关于Sum of Two Integers的主要内容,如果未能解决你的问题,请参考以下文章
leetcode371. Sum of Two Integers
LeetCode之371. Sum of Two Integers
LeetCode: 371 Sum of Two Integers(easy)