16GB in hardware is not the same as 16GB in software.
1MB in HW = 1000Kb
1MB in software is 1024Kb
This seems to be across every OS i have ever come across.
Here is a better explanation:
"This is not flaw and many will tell you it is because of the space needed for the OS or that formatting takes up the space, but they are all wrong.
Many years ago, the HDD manufacturers got together and decided to start screwing their customers. They changed the meaning of a gigabyte from what it should be (1,073,741,824 bytes) to simply 1 billion bytes. This is a cheat and a great way for storage manufactures to cheat their customers. In the beginning only a few caught on and there was a lawsuit filed, but the storage makers only got their hands slapped and where told they could continue this heinous practice as long as they disclosed it on the packaging. Well they do, just in very small text.
The over all effect of this change was not all that great when hard drives where only 1-2 gigabytes in size. However, now I have a 1 TB (yeah right) external HDD sitting next to me. The actual size of which is far less. It is more like 940 gigabytes"
Just in case you are interested, the actual number of bytes it would really need to have to be 16 GB is 17,179,869,184 Bytes