Recently, at the OEM Tech Support call center I work at, I had to put together an article for the reps who work for me explaining why Windows seems to misrepresent the size of a hard drive within the properties screen of a local hard drive. Below is the document (minus screen shots of hard drive properties) I put together for them. There is very little information available online about the issue, so I felt impelled to share it with everyone here at the place where all information originates…
WHY IS MY HARD DRIVE NOT AS LARGE AS ADVERTISED?
I’m sure you have all gotten this call. It usually goes something like this……
ordered a 20 GB hard drive, and you sent me an 18 GB hard drive!!!”
First, I can tell you with absolute certainty that no one has ever manufactured an 18 GB hard drive.
Although it is not an actual metric measurement, hard drive space uses regular metric conversions when discussing size. Hard drive space, memory speed, processor speed and various other measurements involved with a computer all use these same measurement conventions. Below is a quick refresher in metric prefixes for those who may need it…
KILO = 1,000
MEGA= 1,000,000
GIGA= 1,000,000,000
These prefixes are used exactly as they are with any metric conversion……
1 Kilometer = 1,000 meters
1 Kilobyte = 1,000 Bytes
, THE FUN BEGINS!!!
Below is a screenshot of the hard drive properties of a local hard drive in Windows XP……This is normally where a customer comes to believe that they have been sent a slightly smaller hard drive than they expected.
(to get here, click on [Start], [My Computer], right-click on the hard drive in question, and choose [properties] from the drop down menu that appears) For Windows 98 or 2K users, double clicking My Computer on the desktop accomplishes the very same goal as clicking on [Start], [My Computer].
Notice the line immediately above the pie chart that reads……
capacity: 20,012,072,960 bytes 18.6 GB
This is the line that, without regard to how full a hard drive is details the exact size of the customer’s hard drive.
Many of you have probably already noticed a discrepancy. If the system has 20,012,072,960 bytes, why does the computer say that the capacity is only 18.6 GBs? We just reviewed our metric conversions and a hard drive with 20,012,072,960 bytes, if 1 billion bytes = 1 GB, should be equal to 20.01 GBs.
The answer is that both “20,012,072,960 bytes” and “18.6 GB” accurately depict the size of the hard drive.
How is that possible?
Because hard drive size is in the eye of the beholder……
To us human-types, using standard Base10 math, 20,012,072,960 bytes is equal to approximately 20GBs. The size of the hard drive the customer purchased.
To Windows, which does not use Base10, the size “appears” differently. Windows uses what is called hexadecimal math, or Base16 math. In Base16, a Kilobyte is not 1000 bytes, but rather 1024 bytes. Why is not important, but basically 1024 is as close to 1000 as you can get using powers of 2. In other words 210 is equal to 1024. The same principle is involved with conversion from KB to Megabytes and from MB to Gigabytes.
To better illustrate this, let’s break down the size from actual bytes to GBs using both Base10 and Base16 math.
Base10 Base16
Total size 20,012,072,960 bytes 20,012,072,960 bytes
÷ 1000 bytes/kb ÷ 1024 bytes/kb
To Kbytes =20,012,072.96 KB =19,543,040 KB
÷1000 kilobytes/MB ÷1024 kilobytes/MB
To Mbytes=20,012.07296 MB =19,085 MB
÷1000 megabytes/GB ÷1024megabytes/GB
To Gbytes =20.01207296 GB =18.6 GB
When a customer calls in with a 20 GB hard drive, you can use this example to walk them through converting 20 billion bytes to GB in Base16, unfortunately not all customers will have a 20 GB hard drive. Walk the customer through the same conversions from the Base16 column using whatever size hard drive they have. Have them read you the number of bytes their computer has from the CAPACITY line in My Computer (see screenshot above) and have them open Calculator and perform the operations themselves.
Piece of cake right?
Now, how do you communicate this to the customer? Here is some verbiage that you might want to try.
“You’re system has 20 Billion bytes (or whatever size HD they have), we see this as 20 gigabytes, because we know that Giga means 1 Billion. Windows, however, uses Hexadecimal, or Base16 math, and reports a smaller number of Gigabytes because to Windows a Gigabyte is actually a little bigger than we see it as.”
Example: To us: (Base10), 1 Gigabyte equals 1,000,000,000 (1 Billion) bytes
To Windows: (Base16), 1 Gigabyte actually equals 1,073,741,824 (1 point Zero-Seven Billion) bytes
TO US: A 20 Gigabyte hard drive = 20GB * 1,000,000,000 Bytes/GB = 20,000,000 bytes
TO Windows: The Same “20 GB hard drive” = 18.6GB * 1,073,741,824 Bytes/GB ~ 20,000,000 bytes
Let’s try this again with a different size hard drive……
Here is a screenshot of the properties of an 80GB hard drive……
OH NO!!! MY 80 GB HARD DRIVE IS ACTUALLY ONLY 74.5 GB!!! (MAJOR OEM MANUFACTURER) SENT ME THE WRONG SIZE HARD DRIVE!!!
First have the customer open Calculator……
Now, have them read to you the number of bytes listed in the CAPACITY line (right above the pie graph)
Have them this number into calculator…
In this case: 80,023,715,840 bytes
Now, the first thing we want to do is convert all of those bytes to kilobytes…using Base16 math……
In Base16 math a kilobyte is equal to 1024 bytes, so to derive the number of kilobytes, we simply need to divide the number of bytes on the system by 1024……. 80,023,715,840 ÷ 1024 = 78,148,160 kilobytes
NOTE: Make sure the customer uses the exact number given to them by calculator to perform the next step, this will prevent rounding issues and make you look like a genius when the final result comes out to exactly what their hard drive size is according to their computer
Great, now we have 78,148,160 kilobytes. So, let’s convert that to Megabytes. To do this, we simply divide the number of kilobytes (which should still be in the calculator window) by 1024, because in Base16 math, there are 1024 kilobytes in a Megabyte……… 78,148,160 ÷ 1024 = 76,316.5625 Megabytes
So now we have 76,316.5625 Megabytes. Great, one last step. To convert those Megabytes to Gigabytes, all we have to do is divide by 1024 again, because in Base16 math, there are 1024 Megabytes in 1 Gigabyte. Using the number still on the calculator, have the customer divide by 1024……76,316.5625 ÷ 1024 = 74.5
So we started with 80,023,715,840 bytes and converted that in Base16 math to 74.5 GBs
Compared to the Graph above……
Capacity: 80,023,715,840 bytes 74.5 GB
The following information is for you only, I don’t recommend trying to convey any of this to the customer as it will probably only confuse them even further….
The issue of Windows displaying hard drive size in a language uncommon to most users has been around since the inception of computing. It wasn’t however a big issue until just recently, because 12-15 years ago when home PCs first starting becoming a trend, the average hard drive size was about 20 Megabytes. In Windows, a 20 Megabyte hard drive would show up as about 19.1 Megabytes, a difference of only 900 kilobytes. Barely noticeable and certainly not an issue worth stressing about. With the advent of much larger hard drives, the difference between the Base10 size of the hard drive and the Base16 size are much more apparent. Per our 80GB hard drive earlier, 5.5 Gigabytes difference, or roughly 6000 times larger than the difference of 900 kilobytes from our 20 Megabyte hard drive example.
What is Base16 math?
Base16 math, which, for the remainder of this document will be referred to as hexadecimal(from hexa, meaning 6 and deca, meaning 10…6 + 10 = 16) is simply a counting system that was initially used by programmers instead of binary, or Base2 math. Most of you are familiar with the Binary system computers use. “1”s and “0”s. To illustrate why a programmer would prefer hexadecimal over binary, take a look at how to write the number 1 million in the three different methods….
Base10 = 1,000,000
Base2 = 00000010010000101111
Base16 = f4240
Big difference huh? Even bigger for programmers. One more example……
1 Billion
Base10 = 1,000,000,000
Base2 = 0000000101001101001
Base16 = 3b9aca00
Much easier, provided you take the time to learn how to read 3b9aca00 as a number.