/**
* @param {number} dividend
* @param {number} divisor
* @return {number}
*/
var divide = function (dividend, divisor) {
//The largest number in A 32-bit signed interger ranger is 2147483647 which is 01111111111111111111111111111111 in binary
if (dividend === -2147483648 && divisor === -1) return 2147483647
let quotient = 0,
isNegative = false,
absDivisor = Math.abs(divisor),
absDividend = Math.abs(dividend)
if (dividend > 0 !== divisor > 0) isNegative = true
while (absDividend >= absDivisor) {
absDividend = absDividend - absDivisor
quotient++
}
return isNegative ? -quotient : quotient
}
//Test cases
console.log(divide(7, -2))
console.log(divide(0, -2))
console.log(divide(-2147483649, -1))
console.log(divide(0, -1))