地址:https://leetcode-cn.com/problems/divide-two-integers/
思路:运用位移运算,由大到小依次判断即可
Code:
class Solution {
public:
int divide(int dividend, int divisor) {
int INF=((long long)1<<31)-1;
long long a=dividend,b=divisor;
long long res=0,p=1,x=b,y=1;
if(a<0){
a=-a; p=-p;
}
if(b<0){
b=-b; p=-p; x=-x;
}
while(a>=x){
x<<=1; y<<=1;
}
x>>=1; y>>=1;
while(a>=b){
if(a>=x){
a-=x; res+=y;
}
x>>=1; y>>=1;
}
if(p<0) res=-res;
if(res>INF) res=INF;
return res;
}
};