Why are hard drives never as large as advertised?
The technical reason is that the hard drive manufacturers sell you capacities in metric units. So a GB = 1,000,000,000 bytes by the metric system. However, computers measure the drive size in powers of 2. So 1GiB = 1,024MiB, 1MiB = 1,024KiB, etc. What this means is that 1GiB = 1,073,741,824 bytes, a difference of 73,741,824.
So when you install your 1GB (for the sake of example) drive, the OS only sees 0.93GiB, and this is the cause of the discrepancy.
(If you've never seen the abbreviation GiB before, it's a new notation adopted to denote powers of 1024 as opposed to 1000. However, most operating systems will report GiB as GB, confusing this issue even further)
Originally this was the answer to this question (merged) about 4GB pen drive.
Let's we start from the statement:
"Human system is based on power of 10, binary on on power of 2"
What it follows can give a first answer to your question.
The metric prefixes are power of 10, 1000 or 10^3 is k, 10^6 is M, 10^9 G...
The binary prefixes are power of 2 ( 2^10 = 1024 not so far from 1000 but different, 2.4%).
4000000000/1024/1024/1024 Your 4GB are 4 000 000 000 Bytes
3.72529029846191406250 That becames around 3.73 GiB
Vendors and Law: Vendors behave following market's rules, when laws do not force them to do otherwise. 4 sells better then 3.78. For the same reasons the internet providers often speak about bps and let you understand Bps. There is a factor 8: a Byte(B) is 8 bits(b).
The problem is that the laws exist, but not in all the nations are the same.
The International System, or SI, is the most widely used in the world for commerce and science (It was published in 1960 and at present are partially out only USA that is adopting, Burma and Liberia).
It establishes not only the units of measurement but even the prefixes.
Since it is natural in the computer world the use of a numeric base in power of 2 (and not 10 as in human world) it was introduced in 1998 the system of the binary prefixes. Here directly the table. Nowadays we find in the situation that
the International Electrotechnical Commission (IEC) and several other standards
(NIST...) and trade organizations approved standards and recommendations
for a new set of binary prefixes that refer unambiguously to powers of 1024
When you read 1GB
it should be 1 000 000 Bytes
,
instead when you read 1GiB
it should be 1 073 741 824 Bytes
.
Why still should be and not is? Because it depends from how the legislator of the nation in which is produced the item and the legislator of the nation in which the item is imported adopt and transform in law the directive of the international commissions.
So keep your eyes well open.
(Even because in several nations it is prescribed to write the informations to fulfill the duties of law on an adhesive label. Usually it is so little than you really need to keep well open your eyes to read read it)
Additional References
- The International System of Units (SI) (8th ed.), ISBN 92-822-2213-6
- Specific units of IEC 60027-2 A.2 and ISO/IEC 80000
- NIST SP 330 for some appliance of SI in the United States
- Council Directive 71/354/EEC of 18 October 1971 on the approximation of the laws of the Member States relating to units of measurement
- Council Directive 80/181/EEC of 20 December 1979 on the approximation of the laws of the Member States relating to units of measurement and on the repeal of Directive 71/354/EEC and successive modifications
When a drive manufacturer creates a 500 GB capacity drive, it does have a capacity of 500,000,000,000 bytes, and they are sure going to advertise it as such. Computers, being binary devices, prefer powers of two, with a different set of prefixes, so that is what they use for storage space measurement:
1 kibibyte = 2^10, 1 mebibyte = 2^20, 1 gibibyte = 2^30, etc.
For instance, I have a 300 GB drive attached to this machine and Windows displays the following for the capacity:
Capacity: 300,082,855,936 279 GB
300,082,855,936 / 2^30 = ~279. What it is actually showing you is the drive's size in gibibytes, not gigabytes. So, it should read:
Capacity: 300,082,855,936 279 Gi
One might say this is a flaw in Windows, but apparently there is no definitive standard for storage capacity prefix meanings. Lots more good info, including a section on "Consumer confusion", in this Wikipedia article.