前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1. A + B 问题

1. A + B 问题

作者头像
和蔼的zhxing
发布2018-09-04 13:18:19
1880
发布2018-09-04 13:18:19
举报

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

  1. 进行位与可以判断是否需要进位。
  2. 位异或可以处理不需要进位的哪些位。
  3. 需要进位的位可以通过位与获得。
  4. 进位的位左移一位可以与不需进位的位相加可得结果。 迭代进行上述四个过程就可以获得最终的结果,自然这个现象怎么可能是我发现的呢,来源已不可考,但是方法还是很好的,code:
代码语言:javascript
复制
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
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档