32bit operating systems can access a total of 2^32 (2 because machine code is in binary, 1 or 0) memory allocations. That is 2 to the power of 32 which equals 4,294,967,296 or 4GB.
I didn't say 2^32 allocations of RAM I said 2^32 memory allocations. If you have a 512mb graphics card, the operating system has use 536,870,912 of its 4,294,967,296 available memory allocations just for the graphics card.
Every other card and input/output device also require a portion of the total available memory allactions, no exceptions.
The left over abailable memory allocations can then be allocated to RAM, which is why we see something which looks like 'RAM: 4GB (3.5GB usable)'.
On a seperate note, if you need more available ram just plug in 2^64 to your calculator. That is the total ammount of memory allocations a 64 bit operating system sopports.
(for those who cant be bothered calculating it, it's 18,446,744,073,709,551,616
side by side