不用乘除余计算两个数的商。
基本都能想到左移吧,关键是实现起来多精炼。
在leetcode上看到的:
int divide(int dividend, int divisor) {
bool signA = dividend >= 0, signB = divisor > 0;
unsigned num = abs(dividend), div = abs(divisor), res = 0, curr = 0;
// using Long division
for (int idx = 31; idx >= 0; idx--) {
curr <<= 1;
curr |= ((num >> idx) & 1);
res = res << 1;
if (curr >= div) {
curr -= div;
res |= 1;
}
}
if (signA ^ signB)
return -(int)res;
return (int)res;
}