题目:

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

分析:

将加法还原成最原始的计算方法,也就是分别计算进位和非进位的和,最后再将这两部分合起来,便是和。我们可以利用&和<<求进位,^求不算进位的和。

例如5+9,5的二进制是101,9的二进制是1001,先求两个数的进位,也就是5&9=1,再左移一位,2(0010)便是进位,然后再利用异或求不算进位的和,101^1001=1100,然后再利用&和^直到进位为0时为止。

程序:

C++

class Solution {
public:
int Add(int num1, int num2)
{
if(num1 == 0)
return num2;
if(num2 == 0)
return num1;
int carry = 1;
while(num2 != 0){
carry = (num1 & num2) << 1;
num1 = num1 ^ num2;
num2 = carry;
}
return num1;
}
};

Java

public class Solution {
public int Add(int num1,int num2) {
if(num1 == 0)
return num2;
if(num2 == 0)
return num1;
int carry;
while(num2 != 0){
carry = (num1 & num2) << 1;
num1 = num1 ^ num2;
num2 = carry;
}
return num1;
}
}

剑指Offer-48.不用加减乘除做加法(C++/Java)的更多相关文章

  1. 剑指Offer 48. 不用加减乘除做加法 (其他)

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目地址 https://www.nowcoder.com/practice/59ac416b4b944300 ...

  2. [剑指Offer] 48.不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2.第二步:计算进 ...

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

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

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

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

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

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

  6. 【Java】 剑指offer(65) 不用加减乘除做加法

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×. ...

  7. Go语言实现:【剑指offer】不用加减乘除做加法

    该题目来源于牛客网<剑指offer>专题. 第一步:相加各位的值,不算进位,得到010,二进制每位相加就相当于各位做异或操作,101^111. 第二步:计算进位值,得到1010,相当于各位 ...

  8. 【剑指offer】不用加减乘除做加法,C++实现

    原创博文,转载请注明出处! # 题目 # 思路 第一步:不考虑进位对每一位相加(异或操作) 第二步:考虑进位(位与运算+左移) 第三步:第一步和第二步相加(重复执行前两步) # 代码 #include ...

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

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27966641 题目描写叙述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.* ...

  10. 剑指offer——75不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号.   题解: 使用位运算   class Solution { public: int Add(int num1 ...

随机推荐

  1. PyQt 快速使用

    1.安装 PyQt:使用 pip 命令在终端或命令提示符中运行以下命令: pip install pyqt5 2.创建 PyQt 应用程序:导入 PyQt5 模块并创建一个 QApplication ...

  2. three.js使用Instanced Draw+Frustum Cull+LOD来渲染大场景(开源)

    大家好,本文使用three.js实现了渲染大场景,在移动端也有较好的性能,并给出了代码,分析了关键点,感谢大家~ 关键词:three.js.Instanced Draw.大场景.LOD.Frustum ...

  3. 力扣231(java)-2的幂(简单)

    题目: 给你一个整数 n,请你判断该整数是否是 2 的幂次方.如果是,返回 true :否则,返回 false . 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方. 示例 ...

  4. HarmonyOS NEXT应用开发之异常处理案例

    介绍 本示例介绍了通过应用事件打点hiAppEvent获取上一次应用异常信息的方法,主要分为应用崩溃.应用卡死以及系统查杀三种. 效果图预览 使用说明: 点击构建应用崩溃事件,3s之后应用退出,然后打 ...

  5. 一文详解 Serverless 架构模式

    什么是 Serverless 架构?按照 CNCF 对 Serverless 计算的定义,Serverless 架构应该是采用 FaaS(函数即服务)和 BaaS(后端服务)服务来解决问题的一种设计. ...

  6. 基于 Observable 构建前端防腐策略

    ​简介:To B 业务的生命周期与迭代通常会持续多年,随着产品的迭代与演进,以接口调用为核心的前后端关系会变得非常复杂.在多年迭代后,接口的任何一处修改都可能给产品带来难以预计的问题.在这种情况下,构 ...

  7. Kubernetes 稳定性保障手册 -- 极简版

    简介: Kubernetes 在生产环境中的采用率越来越高,复杂度越来越高,由此带来的稳定性保障的挑战越来越大. Kubernetes 在生产环境中的采用率越来越高,复杂度越来越高,由此带来的稳定性保 ...

  8. 项目实战总结以及接入U-APM

    ​简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线.系统函数.编程范式.数据结构等导致的.即便是较有经验的程序员,也很难在开发时就能避免所有导致 ...

  9. KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化

    ​简介: 2021 年 6 月 23 日,云原生计算基金会(CNCF)宣布通过全球 TOC 投票接纳 KubeDL 成为 CNCF Sandbox 项目.KubeDL 是阿里开源的基于 Kuberne ...

  10. CF1097C Yuhao and a Parenthesis

    CF1097C Yuhao and a Parenthesis stl 乱搞做法,感觉比正解更直接. 每个字符串内部能匹配的尽可能匹配. 匹配完成后,检验剩余序列是否只含有 ( 或只含有 ) 或为空, ...