低级 – 在不使用操作符的情况下添加两个数字的最佳方法是什么?

一个朋友和我一起来来回脑筋,我不知道如何解决这个问题。我的假设是可以用一些按位运算符,但不确定。
在C中,使用按位运算符:

#include<stdio.h>

int add(int x, int y) {
    int a, b;
    do {
        a = x & y;
        b = x ^ y;
        x = a << 1;
        y = b;
    } while (a);
    return b;
}


int main( void ){
    printf( "2 + 3 = %d", add(2,3));
    return 0;
}

XOR(x ^ y)是没有进位的加法。 (x& y)是每个位的进位输出。 (x& y)< 1是每个位的进位。 循环继续添加进位,直到所有位的进位为零。

翻译自:https://stackoverflow.com/questions/365522/what-is-the-best-way-to-add-two-numbers-without-using-the-operator

转载注明原文:低级 – 在不使用操作符的情况下添加两个数字的最佳方法是什么?