Below is the real answer. When you buy a 16GB device, you are still getting the 16GB as advertised but the software computes that space as a different amount. so the 12 GB space that you have is real then take away even more space for the OS and apps. On a 32GB device, you actually have about 27GB space and then take away even more for the OS and apps.
It's all in how the space is advertised and how the device actually reports that space: Megabits vs megabytes. Two different devices running the same OS versions will also not have the same amount of space available due to differences in features that the devices use such as a Nexus 4 and a Nexus 7.
The prefix mega- means "1 million", and a byte is usually made up of 8 bits, so:
A megabit (Mbit) is
1,000,000 bits
1,000 kilobits (kbit)
A megabyte (MB) is
1,000,000 bytes (B)
1,000 kilobytes (kB)
8,000,000 bits
8,000 kilobits (kbit)
In some contexts, people in the computing and information technology industry use the prefix mega differently. Because digital computing is based upon a binary numbering system, mega- in many cases meant 1,048,576, while in others it meant 1,000,000.
With the increase in use of, and access to, the technology by persons with little or no education in digital computing, or experience of this historical meaning, the prefixes mega- and kilo- etc. became confusing because of their ambiguous meanings.
With the increase in storage capacities, the discrepancy between the two measurement systems became much larger and more important, and the old meaning of mega in the binary numbering system is now, therefore, formally known as megabinary.