Why is Java able to store 0xff000000 as an int?

hex, int, java

Solution

The high bit is a sign bit. Setting it denotes a negative number: -16777216.

Java, like most languages, stores signed numbers in 2's complement form. In this case, subtracting 231, or 2147483648 from 0x7F000000, or 2130706432, yields -16777216.

Problem

An integer's max value in Java is 2147483647, since Java integers are signed, right? 0xff000000 has a numeric value of 4278190080. Yet I see Java code like this: ``` int ALPHA_MASK = 0xff000000; ``` Can anyone enlighten me please?

Original source