c++ 不用加法实现加法

参考链接:https://www.bilibili.com/video/BV1v94y1z76m/

// test_add.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;


int sub(int a, int b)
{
    if (!a)return b;
    return sub((a & b) << 1, a ^ b);
    /*
    如果是100+11,即4+3
    &直接为0,那么a^b就是结果,就是说,没有重复的话,的确是这样的,

    如果有重复的,101+111,5+7
    取共同的位,发现有值,101。
    相同部分相加,就是相同部分乘以2,也就是左移一位
    取不同的部分 a^b, 010,拿到两个数中不一样的部分。作为b递归调用加法。

    妙啊
    */
}

int main()
{
    int a = 5, b = 7;
    cout << sub(a, b) << endl;
    return 0;
}

文章目录