Skip to main content

Why storage devices show a less capacity than real value

Many of the Microsoft windows users complain their storage devices like hard disks and flash drives show a less capacity in windows operating systems than manufacturer mentioned capacity. For example 4 GB pen drive usually have a capacity of about 3.72 GB. 320 GB hard disk has about a capacity of about 300 GB. People give different opinions as reason for this. Some says windows allocate some space for back up process. Some accuse the manufacturer. But actually the mentioned capacity is there. Reason is a matter of using different unite.
The smallest unit we use to measure data is byte(B). Bit (b) is smaller than byte. But we usually don't use bit to measure size of stored data. Bit is used to measure data transfer rates. Size of stored data is measured in bytes. When numerical value of the bytes grows we use prefixes like Kilo, Mega, Giga and Tera. The problem starts from this point.
In system international (SI) units these prefixes are used for powers of 10.
  • Kilo = 103 = 1000
  • Mega = 10= 1000 * 1000
  • Giga = 109 = 1000 * 1000 * 1000
  • Tera = 1012 = 1000 * 1000 * 1000 * 1000 
But in computer world this prefixes are used for powers of 2.
  • Kilo = 210 =  1024
  • Mega =220 = 1024 * 1024  
  • Giga = 230 = 1024 * 1024 * 1024
  • Tera = 240 = 1024 * 1024 * 1024 * 1024
Storage device manufactures use SI unit system to mention the capacity of their storage devices. But computer displays the capacity of storage devices using binary prefixes (powers of 2). This is the reason for the mismatch between the mentioned capacity and displayed capacity.

SI: 109 B = 1 GB 
Binary: 230 B = 1 GB
Therefore SI 1 GB = Binary (1/230 )*109 = Binary 0.9313225 GB
SI 4 GB = 0.9313225 * 4 = Binary 3.725 GB
Now I think you understand the reason for showing a lesser capacity in Windows. But Mac operating systems show the same storage value as same as the mentioned value in the cover. The reason is Mac operating systems use SI system not binary system.

Comments

Popular posts from this blog

How to play Sinhala subtitles(or any other custom fonts) using MX Player on any Android device

Do you know that you can play sinhala subtitles on your android device using MX player even though the device doesn't support sinhala rendering. Just a simple procedure.

Extend internal memory of any Android device (Root Needed)

Low internal memory is a very common problem between low end android devices. Today most of android devices have both more than enough processing power and RAM size. But the internal memory size is relatively low. Due to low internal memory, we can't install many apps and most of the times sync stops working. Two most popular solutions to low internal memory problem. Link2SD Drawback - Slow down the device vold.fstab method Risk of bricking the phone. Need the appropriate vold.fstab for the device. I'm going to tell you a different method. In this method the SD card is joined to the end of the internal memory. If the internal memory is not enough, then the SD card will be used instead of the internal memory.  I installed NFS Most Wanted and NFS No Limits on a Xpeia E3 Dual after extending the internal memory using this methods. (Xperia E3 Dual has a internal memory of 1.7 GB)

Spring Transaction Management over multiple threads

Spring framework provides a comprehensive API for database transaction management. Spring takes care of all underlying transaction management considerations and provides a consistent programming model for different transaction APIs such as Java Transaction API (JTA), JDBC, Hibernate, Java Persistence API (JPA), and Java Data Objects (JDO). There are 2 main types of transaction management in Spring. They are declarative transaction management which is a high level one and programmatic transaction management which is more advance but flexible. The Spring API works very well with almost all of the transaction management requirements as long as the transaction is on a single thread. The problem rises when we want to manage a transaction across multiple threads. Spring doesn't support transactions over multiple threads out of the box. Spring doesn't explicitly mention that in the documentation. But you will end up with run time errors or unexpected results if you try to do so.