【每日一题】另类加法

【每日一题】另类加法


1、题目来源

  牛客网:另类加法


2、题目描述

  给定两个int AB。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。


3、示例

输入:1,2

输出:3


4、解题思路

  二进制加法有一个特点。

  “按位异或” 与 “加法” 的结果是一致的 。即二进制位 异或运算 相当于对应位相加(不考虑进位)。

	按位异或:   1^1=0   1^0=1    0^0=0    
	求和:      1+1=0   1+0=1    0+0=0

  “按位与” 和 “加法进位位” 的结果是一致的 。即二进制位与运算相当于对应位相加之后的进位

	按位与:    1&1=1    1&0=0    0&0=0 
	进位位:    1+1=1    1+0=0    0+0=0 

  于是可以用 “按位异或运算”“按位与运算” 来表示加法, (当进位之后的结果为0时,相加结束)。完美解决不得使用 “+” 或其它算数运算符的问题。


5、代码展示

class UnusualAdd {
public:
    int addAB(int A, int B) {
        if(B==0) return A;
        return addAB((A^B), (A&B)<<1);
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值