leetcode-371. 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.

public class Solution {
    public int getSum(int a, int b) {
        
	int ans = a^b;
	int c = a&b;
	while(c!=0){
		c<<=1;
		int ans_next = ans^c;
		c = ans&c;
		ans = ans_next;
	}
	return ans;
    }
}

总结:这个题目很有意思,读完题目之后第一反应是应该使用位运算,但是具体怎么操作不太了解,因为很少写过位运算。同时这个题目的结题思路也是非常的巧妙,参考了一位前者的思路,首先通过“异或”计算得到一个如果没有进位的结果,再通过“与 ”计算得到哪些位存在进位。c保存进位的位置,如果存在进位的位置,那么将进位的位置左移一位再与上一次“异或”计算得到的结果“异或”计算。如果没有进位则直接输出,否则反复执行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值