How storage units work in binary — and why your hard drive never matches your OS
If I had a dollar for every time someone asked me why storage units use 1,024 instead of 1,000, I'd have a very nice retirement fund by now. The answer is rooted in binary arithmetic: 1,024 is 2^10, which is the closest power of two to 1,000. Computers naturally work in powers of two because of their binary nature — every memory address is a binary number, every data bus width is a power of two, and every storage chip is organized in powers of two.
Here's a quick binary breakdown of the key storage units:
Notice that each step multiplies by 1,024 (2^10), not by 1,000 (10^3). This compounding difference is why the gap between binary and decimal units grows larger at every level.
In my years of working with storage systems, I've found that the IEC binary prefixes (KiB, MiB, GiB) are the cleanest way to avoid confusion, but unfortunately most consumer operating systems don't use them. Windows uses "GB" when it means GiB. macOS and Linux use "GB" for 1,000,000,000 bytes in the Finder but report binary units in command-line tools. It's a mess, and knowing the IEC prefixes is the only reliable way to navigate it.
Here's the complete IEC standard prefix table:
This is one of the most common support questions in tech, and the answer is simple: hard drive manufacturers advertise in decimal (GB, TB), while operating systems report in binary (GiB, but labeled GB). A drive advertised as "1 TB" actually has 1,000,000,000,000 bytes. When Windows divides that by 1,073,741,824 (2^30), you get approximately 931 GiB.
I once bought a "512 GB" NVMe drive that my system reported as 476 GiB. That's not a manufacturing defect — it's the difference between 512,000,000,000 bytes and 512 x 1,073,741,824 = 549,755,813,888 bytes. The drive has exactly what was advertised if you count in decimal. But the OS counts in binary, so the displayed capacity is always lower.
The number 1,024 holds a special place in binary computing because 2^10 = 1,024. In binary, 1,024 is written as 10000000000 — a 1 followed by ten zeros. This clean binary representation makes it the natural boundary for memory addressing. Most memory chips are designed with capacities that are powers of two: 2^10 = 1,024 bytes (1 KiB), 2^20 = 1,048,576 bytes (1 MiB), and so on.
In my experience designing data pipelines, I've learned to always think in powers of two when working with raw storage. If you're allocating a buffer, you make it 1,024 bytes, not 1,000. If you're configuring a cache, you set it to 64 MiB (67,108,864 bytes), not 64 MB (64,000,000 bytes). Mixing binary and decimal units in system configurations is a recipe for off-by-one errors.
Networking consistently uses decimal prefixes for speed. A "1 Gbps" connection transfers 1,000,000,000 bits per second. This is also why internet plan speeds never match real-world download speeds — the plan uses bits per second (decimal), while file downloads show bytes per second (binary by convention in most browsers, though they label it MB/s).
Here's a common scenario: You have a 100 Mbps connection (100,000,000 bits per second). Divide by 8 to get bytes: 12,500,000 bytes per second. Now divide by 1,048,576 (bytes per MiB): you get approximately 11.9 MiB/s. Your browser probably labels this as "11.9 MB/s." If you compare this against a hard drive's 100 MB/s read speed (decimal), the actual ratio is 12.5% — not the 11.9% the labels would suggest.
In my experience, RAM is one area where binary units are used consistently. A "16 GB" RAM stick always contains exactly 16 GiB = 17,179,869,184 bytes. RAM manufacturers use binary measurement because memory chips are inherently binary — they're organized in matrices of 2^n rows and columns. DDR5 memory modules have banks of 2^18 rows by 2^18 columns per bank, multiplied by the number of banks and chips.
This is why you can't directly compare RAM and storage capacities. 16 GB of RAM means 16 GiB of binary-addressed memory. 16 GB of disk space means 16,000,000,000 bytes in decimal — about 14.9 GiB. The same label refers to 14.9% more actual bytes when applied to RAM than to storage.
One might wonder why we haven't standardized on one system after all these decades. The answer is that both systems have valid stakeholders. Hard drive manufacturers prefer decimal because it gives larger numbers on the box. OS developers prefer binary because it aligns with how memory addressing works at the hardware level.
The IEC tried to fix this with binary prefixes (KiB, MiB, GiB) in 1998, and the IEEE endorsed them in 2005. But adoption has been slow — most consumers have never heard of a kibibyte. Apple's macOS has used decimal since OS X 10.6, while Windows stubbornly sticks with binary. As someone who works with data storage daily, I've learned to always double-check which standard is in use.
Multiply the GB label by 0.931 to get the approximate GiB value. A "500 GB" drive shows as about 465 GiB. A "1 TB" drive shows as about 931 GiB.
Open the Binary Code Decoder in a new tab and enter some binary patterns to see the results instantly. All conversions happen in your browser — no data is sent to any server.