专栏首页尾尾部落[剑指offer] 不用加减乘除做加法

[剑指offer] 不用加减乘除做加法

题目描述

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

解题思路

用位运算来实现。

  • step1: 进行异或运算,计算两个数各个位置上的相加,不考虑进位;
  • step2: 进行位与运算,然后左移一位,计算进位值;
  • step3: 把异或运算的结果赋给 num1,把进位值赋给 num2,依此循环,进位值为空的时候结束循环,num1就是两数之和。

参考代码

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [剑指offer] 机器人的运动范围

    地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。...

    尾尾部落
  • [剑指offer] 和为S的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    尾尾部落
  • [剑指offer] 二维数组中的查找

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个...

    尾尾部落
  • 不用加减乘除做加法

    题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。 分析: 第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1...

    猿人谷
  • 简单的搜索引擎搭建

    CodeInHand
  • 剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法

    这个题目可以让我们回归到小学,想想加法的竖式是怎么写的,哈哈,如果当时你不是那个竖式写错了,是不是就不在3班了?是不是就不会在这里写什么这这这....

    WeiMLing
  • 浅说深度学习

    在机器学习中,我们(1)读取数据,(2)训练模型,(3)使用模型对新数据做预测。训练可以看作是当模型拿到新数据的时候、逐步学习一个的过程。在每一步,模型做出预测...

    华章科技
  • 浅说深度学习:核心概念

    用户1737318
  • bootstrap 排版 图片+文字类文章 常用样式 2

    <div class="container"> <h2>多媒体对象</h2> <p>多媒体对象可以设置头部、居中、底部对齐,对应的类分别是 "media-t...

    用户5760343
  • 基于scrapy的腾讯社会招聘爬虫(进阶版)

    此进阶篇相较于前一篇每个item多了工作职责(jobDescription),工作要求(jobRequirement)两个字段。 另外从技术的角度上来说,前一...

    潇洒坤

扫码关注云+社区

领取腾讯云代金券