算 a+b,不能用加号或减号怎么编程

2025-03-22 00:20:23
推荐回答(1个)
回答(1):

位运算可以实现!

其实在cpu实际运算中,都是对二进制进行计算的.

这里由现成的代码,我就当搬运工了,

C语言版本

int Add(int a,int b)
{
 int jw=a&b;
 int jg=a^b;
 while(jw)
 {
  int t_a=jg;
  int t_b=jw<<1;
  jw=t_a&t_b;
  jg=t_a^t_b;
 }
 return jg;
}

Java版本

public int add(int a,int b) {
        int res=a;
        int xor=a^b;//得到原位和
        int forward=(a&b)<<1;//得到进位和
        if(forward!=0){//若进位和不为0,则递归求原位和+进位和
            res=add(xor, forward);
        }else{
            res=xor;//若进位和为0,则此时原位和为所求和
        }
        return res;                
    }

附上四则运算的Java版本

http://www.cnblogs.com/ygj0930/p/6412875.html