不用‘+’号实现两个数相加

来源:互联网 发布:人类曾经被毁灭 知乎 编辑:程序博客网 时间:2024/06/05 09:54

加法很简单,可是如何不使用'+'号怎么来实现两个数相加呢?

这个问题,实际可以通过位运算来解决,具体来说,就是将加法分解成两个部分,一个部分是不会进位的部分,另一部分就是可能产生进位的二进制位。我们只要将可能产生进制的二进制位通过位运算添加到之前不会进位的部分中去就可能得到最终的结果了。可能讲的并不太清楚,可以参考我博客中另外一篇相关的文章。

由于时间的原因,现在仅给出程序代码,大家自己想想具体怎么实现的吧。

#include <stdio.h>#include <stdlib.h>int add(int op1,int op2);int main(){    printf("%d",add(2,3));    return 0;}int add(int op1,int op2){    int tmp1,tmp2,ta,tb;    tmp1=op1&op2;    tmp2=op1^op2;    while(tmp1)    {        ta=tmp2;        tb=tmp1<<1;        tmp1=ta&tb;        tmp2=ta^tb;    }    return tmp2;}

 

下面是一种更加好理解的写法:

int add(int op1,int op2){      int sum,carry;//和和进位标志    do      {            carry=(op1&op2)<<1;            sum=op1^op2 ;            op1=sum;            op2=carry;      }while(op2!=0);      return num1;}