/**
* @param {number} a
* @param {number} b
* @return {number}
*/vardivide=function(a, b){// 1. 溢出情况判断if(a ===(-2)**31&& b ===-1)return2**31-1;// 转负数进行除法let flag = a * b <0;
a = a <0? a :-a;
b = b <0? b :-b;let res =0;while(a <= b){
res +=1;
a -= b;}return flag ?-res : res;};
/**
* @param {number} a
* @param {number} b
* @return {number}
*/vardivide=function(a, b){// 1. 溢出情况判断if(a ===(-2)**31&& b ===-1)return2**31-1;// 转负数进行除法let flag = a * b <0;
a = Math.abs(a);
b = Math.abs(b);// 2. 二进制的短除法,通过有符号移动let res =0;for(let i =31; i >=0; i --){if((a >>> i)>= b){
res +=1<< i;
a -= b << i;}}if(flag && res <0) res =-res;return flag ?-res : res;};