int divide(int dividend, int divisor) {
long long a = llabs(dividend);
long long b = llabs(divisor);
long long ans = 0;
while (a >= b) {
int shift = 0;
while ((b << shift) <= a) {
shift++;
}
ans += (long long)1 << (shift-1); //a=INT_MAX,b=1时,shift=32,1 << (shift-1)之后首位是1就变成负数了,所以要先把1变成long long
a = a - (b << (shift-1));
}
if((dividend^divisor)>>31) //判断是否异号
}
long long a = llabs(dividend);
long long b = llabs(divisor);
long long ans = 0;
while (a >= b) {
int shift = 0;
while ((b << shift) <= a) {
shift++;
}
ans += (long long)1 << (shift-1); //a=INT_MAX,b=1时,shift=32,1 << (shift-1)之后首位是1就变成负数了,所以要先把1变成long long
a = a - (b << (shift-1));
}
if((dividend^divisor)>>31) //判断是否异号
ans=-ans;
}