in java, -2147483648/-1 returns exactly -2147483648, because of the overflow. Why we force the user to return 2147483647?

```
public int divide(int dividend, int divisor) {
int res = Integer.MAX_VALUE;
if (divisor != 0) {
res = (int) div(Math.abs((long) dividend), Math.abs((long) divisor), 0);
if (dividend > 0 ^ divisor > 0) {
res = 0 - res;
}
}
return res;
}
private long div(long x, long y, int sum) {
long oy = y, res = sum, i = 1;
sum = 1;
while (x >= y) {
if (x < y << 1) {
return res + div(x - y, oy, sum);
} else {
y <<= 1;
sum = 1 << i++;
}
}
return res;
}
```

it will get following warning message:

```
"Wrong Answer":
Input:
-2147483648
-1
Output:
-2147483648
Expected:
2147483647
```