輸入2個int型整數,它們進行除法計算並返回商,要求不得使用乘號'*'、除號''及求余符號'%'。當發生溢出時,返回最大的整數值。假設除數不為0。
/**
* 輸入2個int型整數,它們進行除法計算並返回商,要求不得使用乘號'*'、除號'\'及求余符號'%'。
* 當發生溢出時,返回最大的整數值。假設除數不為0.
* @author onefiter
*
*/
public class Main {
public static void main(String[] args) {
int dividend = 10;
int divisor = 2;
int result = divide(dividend, divisor);
System.out.println(result);
}
public static int divide(int dividend, int divisor) {
if (dividend == 0x80000000 && divisor == -1) {
return Integer.MAX_VALUE;
}
int negative = 2;
if (dividend > 0) {
negative--;
dividend = -dividend;
}
if (divisor > 0) {
negative--;
divisor = -divisor;
}
int result = divideCore(dividend, divisor);
return negative == -1 ? -result : result;
}
private static int divideCore(int dividend, int divisor ) {
int result = 0;
while (dividend <= divisor) {
int value = divisor;
int quotient = 1;
while (value >= 0x00000000 && dividend <= value + value) {
quotient += quotient;
value += value;
}
result += quotient;
dividend -= value;
}
return result;
}
}
