位运算实现a+b
来源:互联网 发布:linux系统管理技术手册 编辑:程序博客网 时间:2024/05/22 07:04
a+b是一个非常简单的问题,基本上是编程初学者在hello world后第二个想去尝试完成的功能,本文将不使用+号及其他算术运算符,采用位运算的方式实现a+b
先举一个十进制加法的例子,比如45+67=112,如果不考虑进位得到的结果是2,只考虑进位得到的结果是110,加起来正好是112,对于二进制其实也是这样的,因此我们可以将加操作和进位操作分开,二进制不进位加法其实就是异或操作,而进位操作实际上就是两个数对应位都为1时的左移,考虑到进位次数有限,当进位为0时,加出来的就是答案了
int add(int a, int b) { if (b == 0) { return a; } int sum = a ^ b; //加操作 int carry = (a & b) << 1; //进位操作 return add(sum, carry); //将加操作结果加上进位操作结果}
递归的效率有时不高,很容易转换成迭代
int add2(int a, int b) { int sum = 0, carry = 0; while (b) { sum = a ^ b; carry = (a & b) << 1; a = sum; b = carry; } return a;}
2 0
- 位运算实现a+b
- LintCode1:位运算实现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运算
- 用位运算将a和b的值互换
- 1-A+B 关于位运算(加减法)
- Codeforces Round #443 (Div. 2) A、B、C 位运算
- a+++++b 运算逻辑
- Codeforces 627A XOR Equation【位运算实现加法】
- 1.A+B问题,不用+实现加法运算
- 位运算实现乘法运算
- 位运算实现加减乘除运算
- python判断字符串是否为空
- css-dom(js dom编程艺术第九章笔记)
- 病毒分析2
- Qt解析XML相关(QDom方式)
- html中对hidden状态input控件进行赋值,而赋的值中包含标签,例如"<img~~~>",这样的话>就会导致input控件被截断!
- 位运算实现a+b
- 设计模式之五:原型模式—对象的克隆
- Ubuntu 快捷键
- NEHotspotHelper的使用和申请
- MySQL 主从配置和基于Spring 的读写分离
- 分布式消息队列kafka系列介绍 — 配置文件详解
- java特殊符号替换
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- go Hijack