A+B问题

A+B问题

描述

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

思路:

1、 采用二进制进行加法操作
2、 a ^ b ; 相异为1-->二进制不进位的结果;即0+1=1,1+0=1,0+0=0
3、 (a & b ) << 1 ; (a & b)二进制相同位都是1则该位为1,即1+1 = 10,需要进位则右移一位-->二进制进位的结果
4、 递归调用(2步 + 3步)

好了,我们跟着思路实现一下

递归实现
public static int aplusb(int a , int b) {
        if(a == 0 ) {
            return b;
        }
        if(b == 0 ) {
            return a;
        }
        
        int i , j;
        i = a^b;//不进位得到的结果
        j = (a&b)<<1;//进位得到的结果
        
        //继续相加
        return aplusb(i , j);
    }

迭代实现
public static int aplusb2(int a , int b) {
        int temp;
        while(a != 0 && b != 0 ) {
            temp = a ^ b;
            b = (a & b) << 1;
            a = temp;
        }
        
        return a == 0 ? b : a;
    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我是小小强,这是我的第5篇原创文章,阅读需要大约10分钟。 题目 LintCode:A+B问题 描述 给出两个整数...
    我叫小小强阅读 334评论 0 3
  • 版权声明:本文参考网络文章。 难度:普通 要求: 给出两个整数a和b, 求他们的和, 但不能使用 +等数学运算符。...
    柒黍阅读 1,582评论 0 2
  • 题目描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符 思路 二进制的数字用0、1表示,两数相...
    Yui丶西米大人阅读 610评论 0 0
  • 阴雨绵绵的天气 刺激了我矫情感官细胞 一位远在山东的小可爱 和我打个语音电 话,里面其他人的山东话,听得...
    胡椒墨水阅读 149评论 0 1
  • 此刻,这里无风无雾 无雨滴,无阳光,无裸露的痛 伤口的疼和灵魂的伤 世界那么大,天空那么远 花开花落,云卷云舒 而...
    巴中蓝梦阅读 511评论 0 1

友情链接更多精彩内容