频道栏目
首页 > 资讯 > 其他 > 正文

LintCode 1.A + B 问题

17-09-06        来源:[db:作者]  
收藏   我要投稿

LintCode 1.A + B 问题,给出两个整数a和b, 求他们的和, 但不能使用+等数学运算符。

注意事项

你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。

思路:
把加法拆分为:
相加->异或运算
进位->与运算
将得到的结果(相加的结果和进位)再做同样的操作(相加),直到进位为0,递归完成。
 
异或运算:
不同为1,相同为0
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
按位异或3个特点:
1)0 ^ 0 = 0, 0 ^ 1 = 1 0异或任何数 = 任何数
2)1 ^ 0 = 1, 1 ^ 1 = 0 1异或任何数 = 任何数取反
3)任何数异或自己 = 把自己置0
 
进位运算,m<
public  int aplusb(int a ,int b){
		if (a == 0) return b;
		if (b == 0) return a;
		int num1 = a ^ b;		//异或
		int num2 = (a & b)<<1;	//与后,左进位
		return aplusb(num1 ,num2);
	}

 
 

相关TAG标签
上一篇:用Java实现二叉链表方式存储的二叉树
下一篇:51Nod-1183-编辑距离
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站