Details
Description
-2,147,483,648 is rejected as an int, and −9,223,372,036,854,775,808 is rejected as a long when passed to the binary encoder, but they are valid signed 32-bit and 64-bit numbers respectively.
The problem is that the range check is made against the absolute value of the input, but in two's complement arithmetic types the minimum and maximum values have different absolute values.