位运算实现a+b
题目:给出两个整数 a 和 b , 求他们的和。
a 1 1 0 0 b 1 0 1 0 c 10 1 1 0
递归:
1 | return b == 0? a : aplusb(a^b,(a&b)<<1); |
其中 a^b 表示不同的元素, (a&b)<<1 表示相同的元素。
非递归
1 2 3 4 5 6 7 | tmp = 0 while b != 0 ans = a^b b = (a&b)<<1 a = tmp return a |
原理 保证 a+b和不变,最后b变成了0,那么a就是a+b了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步