LintCode1:位运算实现A+B
来源:互联网 发布:免费淘宝全套模板下载 编辑:程序博客网 时间:2024/06/05 03:26
题目描述
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
测试用例
如果a = 1, b = 2,返回3
解题思路
不能用+号,那么只能用位运算来求解了,实际计算机中的加法也是用位运算来做的。
计算机只知道0,1,根据加法的性质,可以得出下表:
a b c
0 0 0
0 1 1
1 0 1
1 1 0
可以看到,这正和异或运算符^的结果一致。
另外对于进位:
a b c
0 0 0
0 1 0
1 0 1
1 1 1
很明显示,这正是与运算符&的结果。
到这里,问题就引刃而解了,不断的异或操作直到进位为0.
class Solution {public: /* * @param : An integer * @param : An integer * @return: The sum of a and b */ int aplusb(int a, int b) { // write your code here while (b != 0) { int _a = a ^ b; int _b = (a & b) << 1; b = _b; a = _a; } return a; }};
阅读全文
0 0
- LintCode1:位运算实现A+B
- LintCode1:A+B问题
- 位运算实现a+b
- lintcode1- 1. A + B 问题
- A+B(位运算)
- LintCode-第一题:A+B problem (不用“+”等运算符)(位运算实现加法)
- (a+b)/2的位运算
- 通过位运算交换a 和 b
- lintcode刷题 A + B 问题 位运算
- 【lintcode】1、A+B问题【位运算】
- [LintCode]1.A + B 问题 位运算
- 不用“+”运算符,实现A+B运算
- LintCode1
- 用位运算将a和b的值互换
- 1-A+B 关于位运算(加减法)
- Codeforces Round #443 (Div. 2) A、B、C 位运算
- a+++++b 运算逻辑
- Codeforces 627A XOR Equation【位运算实现加法】
- linux命令--groupadd groupmod groupdel
- 删除链表的中间结点
- 《黑客与画家》读书笔记
- 【动态规划】字符串编辑距离(Levenshtein距离)算法
- 采集屏幕编码H264
- LintCode1:位运算实现A+B
- linux进程
- POJ 3321 Apple Tree【dfs序+线段树】
- FFMPEG录屏软件开发之音频采集
- ffmpeg 的时间
- Leetcode#49. Group Anagrams
- jq树形菜单效果
- 瀑布流
- 线性回归(Linear Regression)