Storage devices can be differentiated into RAM and ROM. RAM is a type of volatile memory which is tightly coupled with the CPU. Have you noticed how RAM is always sold in powers of 2? Be it 2GB,4GB,16GB or 32GB. These are not just random numbers but have a very critical reasoning behind this choice and it goes back to the way computing devices are built. As you might know that instructions to the processor are eventually provided in 0s and 1s i.e. in the Binary format.
But why only zeroes and ones and not decimal format? Well, because ultimatley all the data which a computer handles can be summed up into 2 states i.e. ON State (1) and OFF State (0).
Let's think of a storage device with 25 Bytes of memory. The information regarding its size can be stored in 4bits, i.e. it will take atleast 5 Bits to represent 25 in binary format while the maximum number that could be represented in these 5 Bits is 32 (2^5 = 32). This leads to the wastage of 32-25=7 bits of information i.e. memory addresses from 25 to 31. We could have stored 7 more bits of data using the same 5Bits had the size of our memory been 32Bytes. When you want to store something in memory, you must instruct the storage device where to place it in memory. This is accomplished by supplying a memory address (or combination of addresses). Because addresses are also supplied in binary, increasing the number of address bits doubles the number of available storage places. As a result, new storage devices must be at least double the size of the previous biggest one. If it isn't, there will be possible memory regions that aren't addressable.
As the memory size keeps getting bigger and bigger, this loss of storage bits also gets very large. The other implication of this scheme is that we would need to add extra security checks to the firmware codebase to take care of the boundary conditions of the storage device so that it does not overwrite our previously written data and does not step into other memory regions. While all of this is true for RAM, the ROM counterparts are not directly coupled with the processor and can often come in sizes which are not expressible in powers of 2 i.e. 500GB.
To summarise:
Binary Representation: Computers use binary representation, which means that data is stored and manipulated in the form of binary digits (bits), which can either be 0 or 1. This binary system naturally aligns with powers of 2, as each digit represents a power of 2 (2^0, 2^1, 2^2, 2^3, and so on).
Addressing and Organization: Memory devices contain storage cells, and each cell contains 1 byte(usually) of data. We can address these cell in terms of binary numbers very easily. When memory is organized in powers of 2, the addressing becomes more efficient. For instance, if a memory device has a capacity of 2^n bytes, the address for each byte can be represented using exactly n bits.
Hardware Design and Efficiency: Memory hardware is designed to take advantage of this binary addressing. It's more straightforward and efficient to organize memory cells in groups that align with powers of 2. This design simplifies the decoding of memory addresses and reduces the complexity of the memory control circuitry.
Ease of Expansion: Using powers of 2 for memory sizes also facilitates easy expansion. When you want to add more memory to a system, doubling the existing capacity aligns well with the binary address space. This was especially important in the earlier days of computing when memory expansion was a common practice. Adding one extra bits makes the total expressable bits double. For example: 1bit can hold: 0 or 1, 2 bits can hold: 00,01,10,11, and so on. With each extra bit, the storage capacity just doubles.
Compatibility and Standardization: Over time, the use of powers of 2 for memory sizes became a standard practice. This standardization allows for interoperability between different hardware components and systems.
Marketing and Communication: Using powers of 2 for memory sizes can make it easier for consumers to understand the relative sizes of memory devices. For instance, a 16GB device is intuitively understood to be twice the size of an 8GB device, thanks to the power of 2 relationships.
While modern memory systems have become more complex and the reasons for using powers of 2 are not as stringent as they once were, this practice has remained consistent due to its historical significance, compatibility with existing systems, and the familiarity it provides to both hardware designers and consumers.