leetcode刷题05
作者:互联网
设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
示例:
输入: a = 1, b = 1 输出: 2
解:使用加法器的原理
加法器需要三步 1.a和b异或的结果 2.a+b的进位c,3.c和下面一次的相加
step1=a^b,step2=a&b,step3=(a&b)<<1 举个例子,c的二进制 ····0010, d的二进制 ····0010 (c&d)=0010 左移一位0100,我们本来就应该进个1的
class Solution { public: int add(int a, int b) { if(b==0) return a; int step1=0, step2=0, step3=0; while(b!=0){ step1 = a^b; step2 = a&b; step3 = (unsigned int)step2 << 1; a = step1; b = step3; } return step1; } }; 作者:Eric_Light 链接:https://leetcode-cn.com/problems/add-without-plus-lcci/solution/bu-yong-hao-de-jia-fa-by-oneway-4/
标签:05,int,相加,step3,step2,step1,加法器,leetcode,刷题 来源: https://www.cnblogs.com/czrb/p/12373397.html