A+B问题

作者: 奇迹迪 | 来源:发表于2018-05-25 08:56 被阅读40次

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;
    }

相关文章

  • A+B问题

    A+B问题 描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 思路: 1、 采用二进制进...

  • A+B问题

    lintcode算法题 1.A + B 问题 描述给出两个整数 a和 b, 求他们的和。你不需要从输入流读入数据,...

  • A+B问题

    A+B问题 问题描述输入A、B,输出A+B。 输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。 输出...

  • A+B问题

    不用加号计算A+B,我们用异或运算和与运算以及位运算来实现同等的操作,A^B的二进制异或运算,相当于没有进位的加号...

  • TJOJ 1000 以及OJ使用注意事项

    v1.0.01a 菜如我 TJ-SSE A+B problem 以及oj使用问题 1. 简单的加法运算"A+B ...

  • A+B的问题

    一.问题描述:给出两个整数a和b,求他们的和 二.问题说明 a和b都是32位整数么? 是的 我可以使用位运算符么?...

  • Lanqiao:A+B问题

    问题: 代码:

  • lintcode A+B问题

    这道题我们当然可以 return a + b来AC,但是那并不是此题的本意,这道题的意思是让我们不使用加号来实现加...

  • 1、A+B问题

    题目描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符 思路 二进制的数字用0、1表示,两数相...

  • 蓝桥杯 入门训练 Python版

    A+B 问题 问题描述 输入 ,输出 。 解决方法 A,B=input().split( )print(int(...

网友评论

    本文标题:A+B问题

    本文链接:https://www.haomeiwen.com/subject/dicyjftx.html