So Why Isn’t a USB Exactly the Memory Size I Ordered?
Storage devices use a decimal system and PC’s use the binary system. This leads to some discrepancy between the actual capacity and reported capacity by a PC. The difference can bed anywhere from between 2% and 9% depending on the capacity of the drive.So what happened some time ago is that the industry decided that 1MB shouldn’t equal 1048576 bytes and instead should equal 1000000 bytes. 1GB should equal 1000000000 bytes instead of 1073741824 bytes. This way, when you take 16000000000 bytes you can call it 16GB in the packaging, but computers use base 2 math, which converts 16 billion bytes into 14.90 GB of real space. It is mostly a situation of semantics.Here’s some math as calculated by the industry: 1KB = 1000 bytes (10^3) 1MB = 1000000 bytes (10^6) 1GB = 1000000000 bytes (10^9)
Here’s the comparable “terms” as calculated by a computer (binary system):
1KB = 1024 bytes (2^10)
1MB = 1048576 bytes (2^20)
1GB = 1073741824 bytes (2^30)
This is a lot of math and can be a little hard to follow. I looked around to see if I could find others that explained it better and found the following from dpreview.com/forums/post/39333932.We (people) mostly count with ten digits, 0,1,2,3,4,5,6,7,8,9 and so this system of counting numbers is called base 10. When we run out of digits (more than 9) we add a new column, 10,11,12,13,…,97,98,99 and then when we run out of digits again, we add another column, 101,102,…999 and so on ad-infinitum. Counting in 10s is probably explained by having 10 fingers (also called digits).Computers use electronic switches to count. Think about a light switch. Off = no power = no light, On = power = light. This gives it a way of representing two digits, 0 and 1. And this is enough to count:
0 – zero
1 – one
When it runs out of digits, we add another switch, just like adding another column.
10 – two
11 – three
And another
100 – four
101 – five
110 – six
111 – seven
And so on
1000 – eight
10000 – sixteen
100000 – thirty two.
This is counting in base 2 and each time a column (switch) the numbers we can count doubles.This gives each successive column a base value of 2,4,8,16,32,64,128,256,512,1024 and so on. As the numbers get bigger we start to abbreviate them with k (kilo), m (mega), g (giga), t (tera).The closest base number to a thousand (kilo) is 1024, hence it was abbreviated to k, so 1024 bytes = 1kb. If it was just a case of counting the number of bytes, then you could argue that k = 1000 of them, and that would make more sense, but the definition of k as the 1024 boundary is deeply embedded into the way computers have been designed and how they operate (it’s a lot more complicated than just counting numbers).
Knowing that others can understand in different ways we get this from Ask Dr. Math at mathforum.org:
You are correct that the term kilobyte refers to 1024 bytes, where as kilometer refers to 1000 meters. You are also correct in your statement that this is due to the fact that computers use binary(“counts in twos”) instead of decimal (base 10). When computer scientists wanted prefixes to describe large numbers of bytes, they decided to “borrow” the prefixes used in the metric system. But metric prefixes were based on the decimal system, not the binary system. One thousand is 1111101000 in binary, which is not a convenient group size to use. (This would be the equivalent of using 1 km = 976 m in the decimal system – not very helpful.)
However, since 1024 = 2^10 is very close to 1000 = 10^3, those scientists decided to call 1024 bytes a “kilobyte” and to describe it as being “about 1000 bytes.” Further confusion was caused when even larger prefixes were introduced, because they weren’t used consistently. The term “megabyte,” for example, sometimes means 1,048,576 (= 1024*1024) bytes, sometimes means 1,024,000 (= 1000*1024)bytes, and sometimes means 1,000,000 (= 1000*1000) bytes; depending on who’s using the term! To clarify the confusion and multiple definitions, in 1998 the International Electrotechnical Commission (IEC) proposed a different set of prefixes for the binary multiples. Instead of “kilobytes” we’d use “kibibytes,” instead of “megabytes” we’d use “mebibytes,” and so unfortunately, because of the widespread use of kilobytes, megabytes, etc. in the industry and in popular culture, the IEC’s proposals have not caught on and are not in common use.
Now the final point in the discussion to make this a bit more confusing is that a small amount of capacity is taken up by features required by the operating systems like FAT tables, and the flash drive controller for example spare blocks for wear leveling. Wear Leveling? That’s another topic for another time.