面试题47. 不用加减乘除做加法
来源:互联网 发布:和英国人谈恋爱知乎 编辑:程序博客网 时间:2024/04/28 12:46
面试题47. 不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:用位运算替代
首先不考虑进位,0+0=0,0+1=1,1+0=0,1+1=0,相当于“异或”运算
然后考虑进位,只有1+1=1,相当于“与”运算。当有进位时,需要左移1位。
下图以2+3为例,说明了位运算过程:
- 第一步是“异或”,得到不考虑进位的结果
- 第二步是“与”,然后左移1位,得到进位
- 最后两者相加,这里需要使用递归。当进位为0时,递归结束。
public class Solution { public static int Add(int num1, int num2) { if(num2 == 0) { // 进位为0时,返回 return num1; } int num3 = num1 ^ num2; // 不考虑进位 int num4 = (num1 & num2) << 1; // 进位 return Add(num3, num4); }}
阅读全文
0 0
- 面试题47. 不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 面试题42:不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 面试题51:不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 【面试题47】不用加减乘除做加法
- 面试题47-不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- 面试题47:不用加减乘除做加法
- [剑指offer][面试题47]不用加减乘除做加法
- 剑指Offer:面试题47 不用加减乘除做加法
- 剑指offer 面试题47—不用加减乘除做加法
- 【剑指Offer学习】【面试题47:不用加减乘除做加法】
- 剑指offer-面试题47:不用加减乘除做加法
- 剑指offer之面试题47不用加减乘除做加法
- 设计模式原则----里氏替换原则,依赖倒置原则
- 关于mysql中LOAD DATA LOCAL INFILE指定列
- 设置linux环境下ftp权限
- SpringMVC核心技术
- .net中两种弹窗提示
- 面试题47. 不用加减乘除做加法
- 配置搭建阿里云服务器nginx+uwsgi (python)
- js打印局部区域,并且保留input标签里的value值
- SQL中的or与in的区别
- ssm安卓请求服务器返回json
- Java线程Dump分析工具--jstack
- 09.stack实现
- linux下修改新版本的mysql密码
- c中struct和unsigned char*强制互相转化。