A + B 问题(不能用+等数学运算符。)
来源:互联网 发布:域普软件 编辑:程序博客网 时间:2024/05/22 10:23
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
说明
1.a和b都是 32位 整数么?是的2.我可以使用位运算符么?当然可以
样例
如果 a=1 并且 b=2,返回3
解题思路:
首先想到的是异或运算,如二进制的11^10=01,每一位异或都相对于每一位的加法,但是缺乏进位。使用按位与“&”运算可以帮助我们判断该位是否有进位。如11&11 =11,说明两位在加运算中都产生了进位1。由于该进位是加在高位上的,所以很自然的想到了把与运算的结果往左移一位,再和异或结果相加,即为最后结果。
代码
public class Solution { public int aplusb(int a, int b) { // write your code here // a^b;//10^11=01没有进位 // a&b //10&11=10 说明第2个数有进位,但是进位在高位(第3位) // <<1 //左移动一位 就是100 // 最后把结果再进^操作给a,直到没有进位 if (b == 0)//有1代表还有进位 return a; else return aplusb(a^b, (a&b) << 1); }};
阅读全文
0 0
- A + B 问题(不能用+等数学运算符。)
- 1.A+B问题 给出两个整数A和B, 求他们的和, 但不能使用 + 等数学运算符。
- 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
- lintcode 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
- 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
- LintCode-第一题:A+B problem (不用“+”等运算符)(位运算实现加法)
- java题目:求 1+2+...+n,要求不能用除法、 for、 while、 if、 else、 switch、 case 等关键字及条件判断语句( A?B:C)。
- LintCode A + B 问题 : 理解不使用运算符计算加乘
- 函数实现两个数的和,不能用+等算术运算符
- 实现a + b两个整数作和,不能用 '+' 号(人人网)
- 解决shell中(php thinker)方向键 ^[[A ^[[B 以及小键盘不能用情况
- 求 a^b(数学)
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
- Java三元运算符问题:condition?a:b
- 程序员面试宝典(第四版) —— 运算符问题 | a、b 交换与比较
- lintcode刷题 A + B 问题 位运算
- 【lintcode】1、A+B问题【位运算】
- [LintCode]1.A + B 问题 位运算
- Linux 获取文件大小--C函数
- sqlzoo练习答案--Self join
- 算法导论 单源最短路径 DAG-SHORTEST-PATHS
- build.gradle 名字生成网址
- android的makefile -- Android.mk
- A + B 问题(不能用+等数学运算符。)
- SpringCloud 之第二篇: 服务消费者(rest+ribbon)
- 深入了解Java虚拟机学习之--如何实现线程安全?
- tensorflow——SVM实现
- 大数据一些基本概念
- JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨
- 5-5 输出GPLT (20分)
- 测试点记录
- CSU 1112机器人的指令(水题)