No, Microsoft isn't cheating by displaying the memory as the same in both cases.
"32-bit" versus "64-bit" refers only to the size of pointers. Both types of systems have 8-bit bytes, and so the same memory will be 4 giga bytes regardless of whether you're using a 32-bit or 64-bit operating system.
It's not just bytes that are the same size. A normal integer that is defined as int
(in C) is 32 bits on both systems. Even an integer defined as long int
is 32 bits on both systems if it's Windows (although Linux makes it 64 bits on 64-bit systems). So you can see that the "32-bit" or "64-bit" term applied to the OS has very little to do with the size of things other than pointers.
And, beyond that, most of the data stored in the computer's memory is not pointers, or even integers that might or might not change sizes; it's pixels of images or bytes of strings or 16-bit samples in sound files or computer instructions in programs. None of those change sizes at all. As a result, you can generally store the same amount of "real information" in the same amount of memory regardless of whether you're using a 32-bit or 64-bit operating system.
(Now, there is the point that of course some data in memory is pointers, and so when you're dealing with things that are mostly pointers, using a 64-bit operating system can mean that you use more memory for the same data. On very rare occasions that matters, but they are very rare. And, even so, it's still the same number of bytes of memory; you just need more of it.)