剑指 Offer 65. 不用加减乘除做加法

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

示例:

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

class Solution {
public:
    int add(int a, int b) {
        while (b!=0) {
            int c = ((unsigned int)(a&b)) << 1;
            a ^= b;
            b = c;
        }
        return a;
    }
};

一开始不是很懂这个代码,自己尝试了一下运算,a&b是进位的结果,a^b是无进位加法的结果,如果是负数同样成立,因为负数在计算机中是以补码的形式存在的

posted on 2022-03-07 11:40  4小旧  阅读(25)  评论(0)    收藏  举报

导航