Rob already answered that question in his first post - read it carefully...
32-bit x86 processors have instructions to handle 64-bit longs and doubles. Such numbers don't fit into a normal 32-bit register, so the CPU uses two registers for such numbers.
In C / C++, the size of various data types is system-dependent; an int might be 32-bit or 64-bit, or even only 16-bit on some systems. Java is not the same as C / C++, in Java, the sizes of the data types are always the same, regardless of the processor that the code runs on. If the processor can't handle for example 64-bit numbers directly, then the JVM must simulate it.
Section 4.2.1 of the Java Language Specification specifies what value ranges the different integral types can hold.