java 两个数字做除法 利用位运算

public int divide(int dividend, int divisor) {
        boolean sign= (dividend>0)^(divisor>0);
        int result=0;
        if(dividend>0){
            dividend= -dividend;
        }
        if(divisor>0){
            divisor= -divisor;
        }
        while(dividend<= divisor){//都是负数
            int temp_result= -1;
            int temp_divsior= divisor;
            while(dividend <= (temp_divsior)<<1){
                if(temp_divsior<=(Integer.MIN_VALUE>>1)){
                    break;
                }
                temp_result= temp_result<<1;
                temp_divsior= temp_divsior<<1;
            }
            dividend= dividend-temp_divsior;
            result += temp_result;
        }
        if(!sign){
            if(result <= Integer.MIN_VALUE){
                return Integer.MAX_VALUE;
            }
            result= -result;            
        }
        return result;
    }

你可能感兴趣的:(java,算法)