Divide Two Integers

如何实现不用除法来做除法,对比十进制除法可有二进制除法的算法,leetcode Divide Two Integers,当然也可在divide函数写入return dividend/divisor;即可A过

class Solution {
public:
int divide(int dividend, int divisor) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool flag=true;
if((divisor^dividend)<0)
flag = false;
long long int ds = abs((long long)divisor);
long long int dv = abs((long long)dividend);
long long int k = ds;
int result = 0;
while((dv - k)>0 && k < INT_MAX)
{
k <<=1;
}
while(k>=ds)
{
if(dv - k >= 0)
{
result <<=1;
result += 1;
dv = dv - k;
}
else
{
result <<= 1;
}
k >>=1;
}
return flag?result:-result;
}
};

原文地址:https://www.cnblogs.com/727713-chuan/p/3308773.html