LeetTravel-136、371
LeetTravel-136、371
阿泽啊 发表于8个月前
LeetTravel-136、371
  • 发表于 8个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 二进制中与、或、非、异或的应用

136

利用异或的运算性质:XOR异或(N^N=0,0^N=N)。

371.Sum of Two Integers

二进制的与运算和异或运算结合可以代替加法,非运算和异或运算结合可以代替减法。

代码如下:

//加法
public int getSum(int a, int b) {
	if (a == 0) return b;
	if (b == 0) return a;

	while (b != 0) {
		int carry = a & b;
		a = a ^ b;
		b = carry << 1;
	}
	
	return a;
}
//减法
public int getSubtract(int a, int b) {
	while (b != 0) {
		int borrow = (~a) & b;
		a = a ^ b;
		b = borrow << 1;
	}
	
	return a;
}

与运算相当于进位运算,因为与运算是两个都是1才是1,这就表明,结果有1的位置处是需要进位的;

异或运算是,必须两位数分别是0和1,结果才是1,其他都是0,实际上异或运算恰好是不考虑进位的加法运算。

标签: 二进制与或非
共有 人打赏支持
粉丝 0
博文 7
码字总数 5063
×
阿泽啊
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: