不用加减乘除法做加法

不用加减乘除法做加法

求2个数的和,不用四则运算符号。

思路:采用二进制加法的位运算模式。

1. 不考虑进位对每一位相加,异或运算。
2. 计算进位,两个数与运算,再左移1位。
3. 将进位和异或的结果相加,调用自己。

参考代码:

root@gt:/home/git/Code# ./a.out 32
root@gt:/home/git/Code# cat add.c #include <stdio.h> 
int add(int num1,int num2)
{
    int sum = num1 ^ num2;
    int carry = (num1 & num2)<<1;
    if(carry != 0)
        sum = add(sum,carry);
    return sum;
}

int main()
{
    int res = add(8,24);
    printf("%d\n",res);
    return 0;
}

    原文作者:ailx10
    原文地址: https://zhuanlan.zhihu.com/p/34777301
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞