剑指offer——不用加减乘除做加法
2016-07-21 14:34
218 查看
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:
既然不能使用加减乘除,那么只剩下位运算和逻辑运算了。采用位运算的思路分为三步走:第一步,不进位对两个做异或运算(因为不考虑进位,1与1,0与0的异或运算的结果刚好是两者相加的结果);第二步,通过与运算得到两个数的进位值,因为只有1与1进行与运算的时候才会产生进位,所以产生的进位可以看成是两者先进行与运算再左移一位;第三步,把前两步的结果做与运算。然后一直重复,知道不产生进位为止。代码实现:
public class Solution { public int Add(int num1,int num2) { int sum = 0; int carry = 0; while(num2!=0){ sum = num1^num2; carry = (num1&num2)<<1; num1 = sum; num2 = carry; } return num1; } }
相关文章推荐
- javascript的api设计原则
- normalize.css
- 理解DOM事件流的三个阶段
- Javascript变量提升(Hoisting)
- AngularJS HTML DOM
- 前端reset样式
- css
- JavaScript Promise API
- JS 常用TIP 测试输入合法性【HTML/JS】
- 多种方法实现H5网页GIF图片动画效果
- jQuery 之 get、getJSON 与 getScript 方法(13)
- 页面数据以json格式传到后台并解析
- extjs6 基础组件扩展和自定义组件封装--04静态js方法的设计思想
- js 对cookie的设置、删除、管理
- js——getElementBy
- Android原生应用集成ReactNative坑总结
- js获取输入框信息
- nodejs-- npm模块管理器
- JavaScript 面向对象编程浅谈
- HTML转义字符