class Solution {
public:
int divide(int a, int b) {
unsigned int res = 0;
int sign = 1;
if(a == INT_MIN && b == -1){
return INT_MAX;
}
sign = (a > 0) ^ (b > 0) ? -1 : 1;//如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
unsigned int ua = abs(a);
unsigned int ub = abs(b);
for(int i = 31;i >= 0;i--){
if((ua >> i) >= ub){
ua = ua - (ub<<i);//减去b的2^i倍
res += 1<<i;
}
}
return sign==1?res:-res;
}
};
参考:https://leetcode-cn.com/problems/xoh6Oh/solution/jian-dan-yi-dong-javac-pythonjs-zheng-sh-e8r6/