1. A + B 问题

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 不能用求和运算符肯定就是用一些最简单的逻辑运算符实现了。 如果没有进位的情况,可以了解用异或就可以了(用或也可以,但是为了和有进位的情况统一这里还是用异或)。 主要考虑进位的情况,我们需要把其转换成没有进位的情况。考虑这么几种现象。

  1. 进行位与可以判断是否需要进位。
  2. 位异或可以处理不需要进位的哪些位。
  3. 需要进位的位可以通过位与获得。
  4. 进位的位左移一位可以与不需进位的位相加可得结果。 迭代进行上述四个过程就可以获得最终的结果,自然这个现象怎么可能是我发现的呢,来源已不可考,但是方法还是很好的,code:
int aplusb(int a, int b) {
        int c=0,d=0;
        while((a&b)!=0)  //有进位的情况
        {
            c=a^b;    //不考虑进位,亦或就可以
            d=(a&b)<<1;  //进位的情况,
            a=c;
            b=d;   //这是一个递归,如果移位之后还要进位,再进行处理
        }
        return a|b; //处理完了就是没有进位了,这样按位取或就可以了
        // write your code here
    }

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数字图像处理:

    冈萨里斯数字图像处理的那本书的一小点点东西,数字图像处理其实是学过了的,这里我只是把这本书完整看一遍,也是略略的看,查漏补缺,前两张略过了,从第三章开始。

    和蔼的zhxing
  • 407. 加一加和进位分开处理

    给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。 该数字按照大小进行排列,最大的数在列表的最前面。 样例 给定 [1,2,3] 表...

    和蔼的zhxing
  • c++ primer2 变量和基本类型。

    这四种初始化方式c++11都是支持的。c++11中用花括号来初始化变量得到了全面应用。

    和蔼的zhxing
  • 堆,栈,内存泄露,内存溢出介绍

    简单的可以理解为: heap(堆):是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack(栈):是自动分配变量,以及函数调用的时候所使用...

    前朝楚水
  • Vue3.0来了

    Vue这次3.0发布了,博客平台、公众号、朋友圈基本都有这么一条新闻,可见大家对其期待程度,毕竟Vue 有 130 万的使用者嘛,萌新不知不觉感觉瑟...

    前端黑板报
  • 深入浅出再谈Unity内存泄漏

                     测试开发者的共同关注! 作者:Arthuryu,腾讯高级测试工程师 WeTest导读 本文通过对内存泄漏(what)及其危...

    WeTest质量开放平台团队
  • Android内存优化(三)避免可控的内存泄漏

    前言 内存泄漏向来都是内存优化的重点,它如同幽灵一般存于我们的应用当中,有时它不会现身,但一旦现身就会让你头疼不已。因此,如何避免、发现和解决内存泄漏就变得尤为...

    用户1269200
  • Murata村田EDI项目实施

    近期知行软件成功上线一个新的客户项目,客户作为村田的供应商需要与村田建立EDI连接。本文从供应商的角度出发,主要介绍对接村田EDI项目的前期准备、方案设计、功能...

    知行软件EDI
  • java基础学习_面向对象(上)03_day08总结

    ============================================================================= ==...

    黑泽君
  • Java后端开发岗必备技能:Java并发中的内存模型

    JMM通过构建一个统一的内存模型来屏蔽掉不同硬件平台和不同操作系统之间的差异,让Java开发者无需关注不同平台之间的差异,达到一次编译,随处运行的目的,这也正是...

    欧阳愠斐

扫码关注云+社区

领取腾讯云代金券