题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路

思路一:

位运算

思路二:

递归

思路三:

调用Integer的sum方法

思路四:

自增自减

代码实现

package Other;

/**
* 不用加减乘除做加法
* 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
* 思路:位运算
* 1.两个数异或:相当于每一位相加,而不考虑进位;
* 2.两个数相与,并左移一位:相当于求得进位;
* 3.将上述两步的结果相加
*/
public class Solution14 {
public static void main(String[] args) {
Solution14 solution14 = new Solution14();
System.out.println(solution14.Add_4(2, -3)); } /**
* 自增自减
*
* @param num1
* @param num2
* @return
*/
public int Add_4(int num1, int num2) {
if (num1 < 0) {
while (num1++ != 0) {
num2--;
}
} else if (num1 > 0) {
while (num1-- != 0) {
num2++;
}
}
return num2;
} /**
* 调用Integer的sum方法
*
* @param num1
* @param num2
* @return
*/
public int Add_3(int num1, int num2) {
return Integer.sum(num1, num2);
} /**
* 递归
*
* @param num1
* @param num2
* @return
*/
public int Add_2(int num1, int num2) {
if (num2 == 0)
return num1;
return Add(num1 ^ num2, (num1 & num2) << 1);
} /**
* 位运算
*
* @param num1
* @param num2
* @return
*/
public int Add(int num1, int num2) {
while (num2 != 0) {
int temp = num1 ^ num2;//执行加法
num2 = (num1 & num2) << 1;//进位操作
num1 = temp;
}
return num1;
}
}

剑指Offer-不用加减乘除做加法的更多相关文章

  1. 剑指Offer——不用加减乘除做加法

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组 ...

  2. 剑指Offer47 不用加减乘除做加法

    /************************************************************************* > File Name: 47_AddTwo ...

  3. 剑指offer--12.不用加减乘除做加法

    位运算,好久没用了 &:都为1,结果为1 ^:相同为0,不同为1 |:有1,结果为1 <<:左移 ----------------------------------------- ...

  4. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...

  5. 剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers)

    剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-in ...

  6. 剑指 Offer 65. 不用加减乘除做加法 + 位运算

    剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  7. 【剑指offer】65. 不用加减乘除做加法

    剑指 Offer 65. 不用加减乘除做加法 知识点:数学:位运算 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."* ...

  8. 【剑指Offer】不用加减乘除做加法 解题报告(Java)

    [剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  9. 剑指offer(48)不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...

随机推荐

  1. 动态添加数据源,根据用户登录切换数据库.编程式Spring事务.

    根据用户注册,系统自动创建私有数据库,用户登录,动态添加数据源到Spring数据路由,Session超时删除数据源 好处:当数据量大的时候,类似水平切割效果,效率会高一些 坏处:数据源切换,Sprin ...

  2. Docker系统八:Docker的存储驱动

    Docker存储驱动 1. Docker存储驱动历史 Docker目前支持的greph driver包括: AUFS device-mapper btrfs overlayfs(重点) 关于各存储驱的 ...

  3. mysql数据库基本使用(增删改查)

    数据库db,database 数据库:依照某种数据模型进行组织并存放到存储器的数据集合dbms,database management system 数据库管理系统:用来操作和管理数据库的大型服务软件 ...

  4. C语言中的sizeof函数总结

    sizeof函数的结果: 变量:变量所占的字节数. ; printf( 数组:数组所占的字节数. ,,,,}; ] = {,,,,}; printf("size_arr1=%d\n" ...

  5. css进行中打点效果

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 【前端】Vue2全家桶案例《看漫画》之二、完成首页基本样式

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_2.html 项目github地址:https://github.com/shamoyuu/ ...

  7. 关于echarts

    昨天随手玩了下echarts,看见同事纠结于echarts的兼容问题. 最简单的echarts(官网的): <div id="main" style="width: ...

  8. ffmpeg结构体以及函数介绍(二)

    1 avcodec_find_decoder() /** * Find a registered decoder with a matching codec ID. * * @param id Cod ...

  9. 小说接入UC浏览器内核技术对话(一)

    质辛@灿岩 质辛跟我们说一下那个删除文件的逻辑吧质辛@灿岩  应该不是删除cache下所有文件吧?质辛@智鹰  提供一下我们的临时文件完整路径给 灿岩吧质辛@智鹰  是负责我们ucsdk的 技术对接灿 ...

  10. php面向对象学习笔记01-面向对象介绍、构造函数、析构函数

    偶尔翻看以前的笔记.就整理下.方便以后的查阅 类-成员属性 成员属性是从某个事务提取出来的, 可以是基本数据类型,也可以是复合数据类型(数组,对象) //创建一个类 class Cat{ pubic ...