【剑指 Offer 65. 不用加减乘除做加法 简单】

【剑指 Offer 65. 不用加减乘除做加法 简单】

 

写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。

 

示例:

输入: a = 1, b = 1
输出: 2
 

提示:

a, b 均可能是负数或 0
结果不会溢出 32 位整数


思路:利用位运算,每次单独计算加和与进位。

 

class Solution {
public:
    int add(int a, int b) {
        int sum, carry;
        do {
            sum = a ^ b;
            carry = (unsigned int)(a & b) << 1; // leetcode编译器不支持负数左移,g++支持
            a = sum;
            b = carry;
        }
        while(b != 0);
        return sum;
    }
};

 

posted @ 2021-04-01 00:01  蓦然闻声  阅读(23)  评论(0编辑  收藏  举报