HDD sizes are set by manufacturers according to the IDEMA "LBA Count for Disk Drives Standard"[0] formula:
LBA_count = 97696368 + 1953504 * (Reported_Capacity_in_GBytes - 50)
So, for 120 GB HDD: (97696368 + 1953504 * 70) * 512 / 1024^3 = 111.79 GiB
(97696368 + 1953504 * 70) * 512 / 1000^3 = 120.03 GB
For 200 GB HDD: (97696368 + 1953504 * 150) * 512 / 1024^3 = 186.31 GiB
(97696368 + 1953504 * 150) * 512 / 1000^3 = 200.05 GB
For 500 GB HDD: (97696368 + 1953504 * 450) * 512 / 1024^3 = 465.76 GiB
(97696368 + 1953504 * 450) * 512 / 1000^3 = 500.11 GB
Doesn't look like powers of 2 at all. Are you sure about your sizes?
Re:Modern HDDs have gotten somewhat better
by ThePowerOfFuet on Thursday June 23, 2022 @07:21AM
(#31847531)
Logical Block Addresses were simple back when all blocks were 512 bytes. Now we have 520 (T10-PI), 4096, etc, so your math falls apart.
For disks with sectors of 4096 bytes, the formula is the same except the constants are accordingly 8 times smaller.
Regarding sectors of 520 bytes, usable bytes are still 512. Quote from the above referenced document:
> HDDs formatted with T10 PI (Protection Information) have 8 bytes added to the end of each sector. However, the user usable sector size will remain at 512 bytes or 4096 bytes. The 8 bytes of PI will increase the overhead of the disk sector density similar to overhead of ECC bytes in a given sector.
I just checked two of three SSDs available to me. Two were exact multiples of power-of-two gigabytes -- 200 GiB, 120 GiB. One was 500.3 GB.
SI units might be more useful to a consumer (and I am not arguing they aren't). But the argument that storage systems have "nothing to do" with powers of two is not valid.