算法之整數除法


輸入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;
	}
	

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM