Divide Two Integers

来源:互联网 发布:尚客网络 编辑:程序博客网 时间:2024/05/21 17:11

Q:

Divide two integers without using multiplication, division and mod operator.

Solution:

public class Solution {    public int divide(int dividend, int divisor) {        if (divisor == 0)            return Integer.MAX_VALUE;        long first = dividend;        long second = divisor;        int result = 0;        boolean positive = dividend>>31 == divisor>>31? true: false;        first = first > 0? first: -first;        second = second > 0? second: -second;        int div = 0;        while (second<<1 <= first) {            second = second << 1;            div++;        }        while (div >= 0) {            if (first >= second) {                first -= second;                result += 1 << div;            }            else {                second = second >> 1;                div--;            }        }        return  positive? result: -result;    }}


0 0