/**java无加减乘除运算符实现加法
* @author 牵手无奈
*
*/
public class Add {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Integer.toBinaryString(1));
}
public static int add(int a,int b){
int result = 0;//初始化返回结果
int m = -2;//初始化置0的数,-2的二进制为11111111111111111111111111111110
int n = 1;// 初始化置1的数,1 的 二进制为00000000000000000000000000000001
byte c = 0;//表示上一次按位相加有没有进位,初始为0
while(b!=0 || a!=0){
byte p = (byte) (b&1);//把b的最低位取出来
b=b>>>1;//b算术右移一位
byte q = (byte)(a&1);//把a的最低位取出来
a = a>>>1;//a算术右移一位
if(((c&p&q)==1)){//当c,p,q都为1时
result = result | n;//表示在当前位置1,一开始表示将result右边第一位置1
c=1;//有进位产生
}else if((((c^p^q)==0)&&((c|p|q)==1))){//当c,p,q中有两个为1时,将当前位置0,因为1+1+0=0并产生进位
result = result & m;
c=1;
}else if((c|p|q)==1){//当c,p,q中只有1个为1时,将当前位置1,没有进位
result = result | n;
c=0;
}else{//当c,p,q中全部为0时,将当前位置0,没有进位
result = result & m;
c=0;
}
m = m<<1;
m = m|1;
n = n<<1;
}
if(c==0) return result;
else{//如果最后有进位,将当前位置1
result = result | n;
return result;
}
}
} java无加减乘除运算符实现加法