Divide Two Integers

来源:互联网 发布:个人辅导班记账软件 编辑:程序博客网 时间:2024/06/06 01:41

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

If it is overflow, return MAX_INT.


class Solution {public:    int divide(int dividend, int divisor) {        if (divisor == 0)         {            return INT_MAX;        }        bool neg = (dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0);        unsigned int u_dividend = dividend < 0? -1*dividend : dividend;        unsigned int u_divisor = divisor < 0? -1*divisor : divisor;        unsigned int res = 0;        for (int i = 31; i >= 0; i--)        {            if ((u_dividend>>i) >= u_divisor)            {                res += (1<<i);                u_dividend -= (u_divisor<<i);            }        }        if (neg)        {            if (res > (unsigned int)((1<<31)+1))             {                return INT_MAX;            }            else            {                return -1*res;            }        }        else        {            if (res > INT_MAX)             {                return INT_MAX;            }            else            {                return res;            }        }    }};


0 0