【牛客】[编程题]另类加法C++

1.题目描述

链接:https://www.nowcoder.com/questionTerminal/e7e0d226f1e84ba7ab8b28efc6e1aebc

请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。 给定两个int A和B。请返回A+B的值

2.思路分析

  1. 既然要求不能用算数运算符,那就考虑哈位运算符
  2. 1 ^1=0 ,1 ^0=1 ,0 ^0=0(这是异或) 1 +1=0 1+0=1 0+0=0(这是加)
  3. &运算和‘进位’结果一致,(A &B)<<1 即是进位结果,因此A ^B+(A&B)<<1的结果就是A+B的结果

3.代码实现

class UnusualAdd {
public:
    int addAB(int A, int B) {
        while(B)//当A&B<<1==0是就OK
        {
            int ret=A^B;
            B=(A&B)<<1;
            A=ret;
        }
        return A;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43967449/article/details/106671749