LeetCode371. Sum of Two Integers

来源:互联网 发布:python 量化投资书籍 编辑:程序博客网 时间:2024/06/06 14:14

题目

Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:
Given a = 1 and b = 2, return 3.

思路

运用数字电路里的加法器原理,异或得和,相与得进位

两个数按位异或得到对应的各位和sum,按位与得到各位产生的进位tempCarry,tempCarry左移一位得到进位的真正值carry,然后再对sum和carry重复上面的异或相与移位步骤直到carry为0,最终sum即为初始两个数的和

代码

class Solution {public:    int getSum(int a, int b) {        int sum = 0, temp = 0, carry = 0;        sum = a ^ b;        carry = (a & b) << 1;        while(carry) {            temp = sum;            sum = sum ^ carry;            carry = (temp & carry) << 1;        }        return sum;    }};
原创粉丝点击