不使用 + 运算符将两个数字相加的最佳方法是什么?

2023-12-09

我和一个朋友正在反复玩脑筋急转弯,但我不知道如何解决这个问题。我的假设是某些按位运算符是可能的,但不确定。


在 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是每一位的进位。

循环不断添加进位,直到所有位的进位为零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不使用 + 运算符将两个数字相加的最佳方法是什么? 的相关文章

随机推荐