The difference is not that you have 64-bit data types that you can use. The difference is the amount of available memory space and the required size of pointers to memory. On a 32-bit OS, you have 2 ^ 32 bytes of address memory, and you need 32-bit pointers to cover it all. On a 64-bit OS, you have 2 ^ 64 bytes of memory space for an address, so pointers must be 64-bit.
On the hardware level, the built-in 64-bit data types may be more optimal on 64-bit equipment, since there will be 64-bit registers and instructions for processing them. Otherwise, the compiler / runtime library will do more work to support / emulate 64-bit operations on 32-bit hardware.
source share