error:
cannot solve it.
pattern:
- check edge case: if up == INT_MIN, return INT_MAX if down == -1, INT_MIN if down == 1;
- convert up and down to positive integer
- every time use a variable to remember how many bit we shift, and we manipulate it with bit, not change down directly.