【剑指offer-Java版】47不用加减乘除做加法
来源:互联网 发布:电缆选型软件 编辑:程序博客网 时间:2024/06/08 18:16
不用 + - * / 做加法
输入两个整数,不使用四则运算求出这两个数的和
分析加法运算对应的位运算:
1 等价于两个数先做异或运算 – 相当于不考虑进位的加法
2 然后按位与运算并将与运算的和左移一位 – 相当于考虑进位
3 将1中的结果赋值给第一个数,将2中的结果赋值给第二个数
4 如果第二个数不为0,重复1 2 3
public class _Q47<T> { // 不用四则运算 求两个数的和 public int Add(int num1, int num2){ int sum = 0; int carry = 0; do{ sum = num1 ^ num2; carry = (num1 & num2)<<1; num1 = sum; num2 = carry; }while(carry != 0); return num1; } }
测试代码:
public class _Q47Test extends TestCase { _Q47<?> add = new _Q47(); public void test() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{ int num1 = 5; int num2 = 17; System.out.println(add.Add(num1, num2)); num1 = 0; num2 = 0; System.out.println(add.Add(num1, num2)); num1 = -5; num2 = -17; System.out.println(add.Add(num1, num2)); num1 = -5; num2 = 17; System.out.println(add.Add(num1, num2)); num1 = -5; num2 = 0; System.out.println(add.Add(num1, num2)); System.out.println(add.Add(Integer.MIN_VALUE, Integer.MAX_VALUE)); } }
1 0
- 【剑指offer-Java版】47不用加减乘除做加法
- 《剑指offer》:[47]不用加减乘除做加法
- 剑指Offer 47 不用加减乘除做加法
- 剑指offer-47:不用加减乘除做加法
- [剑指Offer 47] 不用加减乘除做加法(Java)
- 剑指Offer面试题47(Java版):不用加减乘除做加法
- 剑指offer:不用加减乘除做加法(java)
- 【剑指offer】不用加减乘除做加法
- 【剑指offer】不用加减乘除做加法
- 剑指Offer之 - 不用加减乘除做加法
- 剑指offer: 不用加减乘除做加法
- 剑指offer 不用加减乘除做加法
- 《剑指offer》不用加减乘除做加法
- 剑指offer--不用加减乘除做加法
- 剑指offer:不用加减乘除做加法
- 【剑指offer】之不用加减乘除做加法
- 剑指offer-不用加减乘除做加法
- 《剑指offer》不用加减乘除做加法
- 服务器相关
- A9 WINCE6.0 1024X600 LVDS屏32位真彩UI解决方案
- Android startActivityForResult onActivityResult 立即执行 和不执行的问题
- 《Hibernate学习笔记一》:第一个程序的搭建
- 【剑指offer-Java版】46求 1 + 2 + 3 + ... + n
- 【剑指offer-Java版】47不用加减乘除做加法
- “Application windows are expected to have a root view controller at the end of application launch”
- 问题解决:对Slidingmenu中控件监听
- tftp环境搭建
- 简单的C#用户权限管理系统
- TCP/IP详解 卷一 ---------ARP地址解析协议
- 我的.emacs
- Android和JS交互
- 54. Spiral Matrix