通过位运算实现加减乘除±*/
首先注意:咱大家都知道的原理哈–(注:自古以来有定理:减法可以通过加法得到,除法可以通过乘法得到;
)
/**
* 加法
* @param ja
* @param jb
* @return
*/
private static int add(int ja, int jb){
int tempJ;
while ((tempJ = ((ja & jb ) << 1)) != 0){
ja = ja ^ jb;
jb = tempJ;
}
return ja ^ jb;
}
/**
* 减法
* @param a
* @param b
* @return
*/
private static int desic(int a, int b){
return add(a, add(~b, 1));
}
/**
* 乘法
* @param a
* @param b
* @return
*/
private static int cheng(int a,int b){
int c = 0;
while (a != 0){
if((a & 1) == 1){
c = add(c, b);
}
b <<= 1;
a >>= 1;
}
return c;
}
/**
* 除法操作
* @param a
* @param b
* @return
*/
private static int devide(int a,int b){
if(b == 0){
System.out.println("除数不能为0!");
return -1;
}
int x = a < 0 ? -a : a;
int y = b < 0 ? -b : b;
int end = 0;
for (int i = 31; i >= 0 ; i = desic(i,1)) {
if(y <= (x >> i)){
end = add(end, (1 << i));
x = desic(x, y << i);
}
}
return end;
}
注:兄嘚们,注意溢出因为是int类型