lintcode第一题 A+B问题
来源:互联网 发布:论文抄袭软件 编辑:程序博客网 时间:2024/06/05 16:07
给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
注意事项
你不需要从输入流读入数据,只需要根据aplusb
的两个参数a和b,计算他们的和并返回就行。
说明
a和b都是 32位
整数么?
- 是的
我可以使用位运算符么?
- 当然可以
样例
int aplusb(int a, int b) {如果 a=1
并且 b=2
,返回3
// write your code here
if(a==0)return b;
if(b==0)return a;
int x1=a^b;
int x2=(a&b)<<1;
return aplusb(x1,x2);
}
首先要知道int类型在计算机中的存储方法,其中负值是存储的补码。通过异或操作和与,经过迭代可以实现加法的计算。
比如6+3:
6的二进制是0000 0110,3的二进制是0000 0011,那么计算如下:
第一次迭代:x1=0000 0101,x2*=0000 0010,x2=0000 0100(左移一位)
第二次迭代:x1=0000 0001,x2*=0000 0100,x2=0000 1000
第三次迭代:x1=0000 1001,x2*=0000 0000,x2=0000 0000,此时出现了0,就可以返回x1的值了,也就是计算结束
得到结果为9,计算结束。
阅读全文
1 0
- lintcode第一题 A+B问题
- LintCode-A + B 问题
- Lintcode A+B问题
- LintCode-A + B 问题
- LintCode A+b问题
- LintCode-A + B 问题
- lintcode -- A+B问题
- Lintcode:A + B 问题
- LintCode-第1题 A+B问题
- (lintcode)第1题 A+B问题
- LintCode之A+B问题
- Lintcode 1 A + B 问题
- LintCode | 1. A + B 问题
- 【LintCode】1、A + B问题
- LintCode 1.A + B 问题
- [Lintcode] #1 A + B 问题
- LintCode-(1)A + B 问题
- LintCode-剑指Offer-(1)A+B问题
- java 远程连接hadoop集群
- 欢迎使用CSDN-markdown编辑器
- JS时间处理插件MomentJS
- mac下idea中没有maven的问题
- squid,Varnish,nginx cache,ats,btw 区别
- lintcode第一题 A+B问题
- 17年将至,一个来自25岁程序员的迷茫
- Get全栈技能点 Vue2.0Node.jsMongoDB 打造商城系统
- vue 路由传值 query 和 params
- Hive报错SemanticException Error in parsing
- HDU 5701 中位数计数 (思维)
- 排序算法之冒泡排序
- 利用JavaScript创建一个欢迎 cookie
- java--面向对象综合案例一