两数相除
通过移位使其为除数的2的整数幂次倍相减;
import java.util.Scanner;
public class Division {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(new Division().division(a,b));
}
public int division(int a, int b){
int fix = 0;
boolean flag = true;
if(a == Integer.MIN_VALUE&&b == Integer.MIN_VALUE){
return 1;
}else if(a == Integer.MIN_VALUE && b == 1){ //可以省略
return Integer.MIN_VALUE;
}else if(a == Integer.MIN_VALUE && b == -1){ //可以省略
return Integer.MAX_VALUE;
}else if(b == Integer.MIN_VALUE){
return 0;
}else if(a == Integer.MIN_VALUE){
if(b > 0){
a += b;
fix = -1; //a,b异号
}else{
a -= b;
fix = 1; //a,b同号
}
}
if(a < 0){
a = -a;
flag = !flag;
}
if(b < 0){
b = -b;
flag = !flag;
}
int r = 1;
int bb = 0;
int result = 0;
while(a>=b){
r = 1;
bb = b;
while(bb<=a>>1){
bb = bb<<1;
r = r<<1;
}
a-=bb;
result += r;
}return flag == true ? result+fix : -result + fix;
}
}