int i1; // range -2,147,483,684 to 2,147,483,684
signed int i2; // range -2,147,483,684 to 2,147,483,684
unsigned int i2; // range 0 to 4,294,967,296
Java does not know unsigned types, just like ADA. In a mixed language environment (e.g. C operating system, ADA applications) this can cause trouble. Also watch out for sign extension when you shift a variable to the right (division). A signed variable will introduce new "1" bits in the most significant position when it is shifted to the right.