[C/C++]不用算术运算符实现两个整数的加法

不能用算术运算符,可以考虑用位运算符,直接对整数的二进制数进行操作,在整数加法中0+0=0,0+1=1,1+1=0,这里可以用异或、与 来实现,具体可以看如下代码。当整数是正的时候,下面代码很容易看出是正确的,但是当整数是负数时,得考虑机器数用补码表示那些计算机原理知识了,学过计算机原理的都知道,整数用补码表示的时候,均是使用同一套加法器的,所以以下的也使用于负数。

 1 int add_no_arithm(int a, int b){
 2     if(b==0){
 3         return a;
 4     }
 5     else{
 6         int sum = a^b;
 7         int carry = (a&b)<<1;
 8         return add_no_arithm(sum,carry);
 9     }
10 }

 

参考文献

《王道程序员求职宝典》

你可能感兴趣的:(c/c++)