':type dividend: int
:type divisor: int
:rtype: int'

def divide2(self, dividend, divisor):

    positive = ((dividend < 0) is (divisor < 0))
    (dividend, divisor) = (abs(dividend), abs(divisor))
    res = 0
    while (dividend >= divisor):
        (temp, i) = (divisor, 1)
        while (dividend >= temp):
            dividend -= temp
            res += i
            i <<= 1
            temp <<= 1
    if (not positive):
        res = (- res)
    return min(max((-2147483648), res), 2147483647)
