不用加减乘除做加法

不用加减乘除做加法

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

解题思路

使用位运算来解题,具体步骤如下:

  • 两个数异或:相当于每一位相加,而不考虑进位
  • 两个数相与,并左移一位:相当于求得进位
  • 将上述两个步骤的结果相加

重复执行上述步骤,直到进位为 0,由于没有进位了,所以此时相加的结果就是最终结果

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2604.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis开发dao两种方法

    mybatis开发dao两种方法mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀的持久层的框架,是apache下的顶级项目。mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。其中,开发dao有两种方法,一种原始的dao开发方法,程序员需要写dao接口和dao实现类。另一种…

    2022年6月13日
    28
  • 详解Java虚拟机[通俗易懂]

    详解Java虚拟机[通俗易懂]JAVA虚拟机

    2022年7月8日
    16
  • 大数据技术的发展趋势

    大数据技术的发展趋势英国牛津大学教授维克托·迈尔-舍恩伯格在其所撰写的《大数据时代》中表述,大数据时代是“已经发生的未来”,而在这个已经发生的未来里,没有旁观者。作为时代发生的必然产物,大数据正加速渗透至我们的日常生活,正完成对各传统领域的颠覆。本文从大数据时代的特点出发,为读者介绍目前的大数据技术的发展趋势以及大数据的生态体系。大数据时代的特点和市场规模大数据时代两个特点。第一,大数据技术以开源为主,迄今为止,尚未形成绝对技术垄断,即便是IBM、甲骨文等行业巨擘,也同样是集成了开源技术和该公司已有产品而已。开源技

    2022年5月12日
    44
  • 梳理一下各大平台使用的sample rate convert算法

    梳理一下各大平台使用的sample rate convert算法梳理一下各大平台使用的resample算法

    2022年10月16日
    1
  • 如何删除对象的某个属性(对象属性方法是什么)

    基于React钩子的轻量级状态管理解决方案Ice-store的简单使用优点极简API:只有5个API,简单上手,使用方便,不需要学习Redux里的各种概念。ReactHooks:拥抱Hooks的使用体验,同时也是基于ReactHooks实现。集成异步状态:记录异步action的执行状态,简化view组件中对于loading与error状态的渲染…

    2022年4月13日
    822
  • VMware中安装系统提示没有可用的映像(No image available)

    VMware中安装系统提示没有可用的映像(No image available)今天新建了个虚机在装系统的时候提示“没有可用的映像”之所以会出现这种情况是因为在新建虚机的时候选择的设置不同导致的,此处不管选第一项还是第二项都会虚机设置中多了一个软盘的配置项,而这个选项默认的勾选就是导致上面没有可用镜像的真正元凶。网上一查这个问题很多都说是开始迅速按F2或者ESC进BIOS修改默认启动顺序,但即使你这么设置了但依旧是无济于事的,所以要解决这个问题…

    2022年6月25日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号