【剑指offer系列】 不用加减乘除做加法___47
2016-04-11 20:09
302 查看
题目描述:
写一个函数,求两个整数之和。要求不能使用加减乘除
分析:
既然题目要求不能用加减乘除,那么只能用到位操作了。
0和1 、1和0异或为1, 0和0 、1和1异或为0
0和0 、0和1 、1和0相与为0, 1和1相与为1
因此可以用异或做加法,与操作来计算进位
以3加5为例,3^5=6,3&5=1,则num=6,carry=1<<1=2;
6^2=4,6&2=2,则num=4,carry=4;
4^4=0,4&4=4,则num=0,carry=8;
0^8=0,0&8=0,num=8,carry=0,退出循环。
代码:
写一个函数,求两个整数之和。要求不能使用加减乘除
分析:
既然题目要求不能用加减乘除,那么只能用到位操作了。
0和1 、1和0异或为1, 0和0 、1和1异或为0
0和0 、0和1 、1和0相与为0, 1和1相与为1
因此可以用异或做加法,与操作来计算进位
以3加5为例,3^5=6,3&5=1,则num=6,carry=1<<1=2;
6^2=4,6&2=2,则num=4,carry=4;
4^4=0,4&4=4,则num=0,carry=8;
0^8=0,0&8=0,num=8,carry=0,退出循环。
代码:
int sum(int num1,int num2){ int carry=0; int num=0; do{ num=num1^num2; carry=(num1&num2)<<1; num1=num; num2=carry; }while(num2); return num1; }
相关文章推荐
- 剑指offer系列之16:树的子结构
- qt+evaluatejavascript
- js和qt4 evaluteJavascript
- css div自适应高度height
- 【剑指offer系列】 圆圈中最后剩下的数字___45
- js练习题:网页换肤
- 剑指offer系列之15:合并两个有序的链表
- 基于Gulp + Browserify构建es6环境下的自动化前端项目
- css3 改变默认选中文本背景色和文本颜色
- 用CSS3变形创建半圆形导航
- 从零开始学习jQuery (五) 事件与事件对象
- css3 画半圆和1/4圆
- [前端]防止xss攻击的最简单方法
- 《转》HTML标签解释大全
- 获取前端post方式传过来的JSON格式的数据的代码
- 解剖css3的background-size属性
- jQuery-:contains("")查询包含值的用法实例
- 解决undefined reference to `__fdelt_chk@GLIBC_2.15'的问题
- AngularJS中的按需加载ocLazyLoad
- 11-04-16: Collective atomic scattering and motional effects in a dense coherent medium