1.A+B问题
来源:互联网 发布:大华onvif协议端口 编辑:程序博客网 时间:2024/05/22 12:08
给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
注意事项
你不需要从输入流读入数据,只需要根据aplusb
的两个参数a和b,计算他们的和并返回就行。
说明
a和b都是 32位
整数么?
- 是的
我可以使用位运算符么?
- 当然可以
样例
如果 a=1
并且 b=2
,返回3
解题思路:
根据提示,本题需要借助位运算模拟加法运算。首先想到的是异或运算,按位异或可以模拟一种不进位的加法运算,如二进制的11^10=01,每一位异或都相对于每一位的加法,但是缺乏进位。如何解决进位的问题呢?
由于异或运算仅仅是忽略了进位,那么每次有进位发生时,异或运算相当于忽略了高位的一个1。使用按位与“&”运算可以帮助我们判断该位是否有进位。如11&11 =11,说明两位在加运算中都产生了进位1。由于该进位是加在高位上的,所以很自然的想到了把与运算的结果往左移一位,再和异或结果相加,即为最后结果。
/* * @param a: An integer * @param b: An integer * @return: The sum of a and b*/int aplusb(int a, int b) { // write your code here if(b == 0) return a; return aplusb(a^b, (a&b)<<1);}
阅读全文
0 0
- 1.A+B问题
- 1.A+B问题
- LintCode | 1. A + B 问题
- LintCode 1.A + B 问题
- lintcode1- 1. A + B 问题
- 1.A + B Problem-A + B 问题(容易题)
- 1.A+B+C问题(Java)
- JAVA入门训练1.A+B问题
- [LintCode]1.A + B 问题 位运算
- LintCode 1. A + B 问题 ☆
- 关于a+++++b问题
- A+B的问题
- A+B问题
- A+B问题acm
- 空行问题A+B
- A+B问题II
- A+B问题 844
- 有关A+B问题
- OGNL概述
- java编程思想笔记-并发之线程协作(二)
- JAVA for和foreach 遍历的效率
- 为什么精英都是清单控(笔记)——社交清单
- 求高精度幂(南阳OJ155题)
- 1.A+B问题
- Python初步了解(六)
- windows下Idea使用git clone failed. Could not read from remote repository
- 8.10上课感悟
- 缺少DAO350.dll的解决方案
- 2017 多校赛6 Classes hdu 6106
- 关于僵尸进程的深度解析
- react native 怎么引用第三方库
- 使用Jedis连接池时报错