“It’s us computer science types who are abusing the official prefix designations: …”
I respectfully disagree.
The operative words in the discussion are 'bit and ‘byte’, not the SI prefixes.
The crux of the problem is binary. A bit has 2 values: 0 or 1. In other words, the use of bits establishes a base 2 (binary) number system. And, binary does not ‘cleanly’ translate to base 10.
A ‘standard’ byte uses 8 bits. Since the byte is composed of bits, it can represent 2^8, or 256 values (0 to 255 in decimal).
If 10 memory address lines are used in hardware, that’s 10 bits, or 2^10 address locations or 1024 locations (0-1023). To limit address space to 1000, or 0-999, one would have to use a hardware mask to disable the last 24 address locations, which would be both inefficient and silly. To describe it as 1000 + 24 is similarly clumsy.
So, how does one precisely describe what is going on in computer memory? By defining a ‘kilobyte’ as 1024 bytes. This accounts for all the bytes addressable in binary and provides a relatively simple framework to discuss binary without discussing it in binary.
To illustrate the disconnect: binary for 1000 is 1111101000 and decimal for the binary number 1000000000 is 512. The idea is to create equivalence using exponents in the base number system (2^N, 10^M, etc), not force one number system onto another.
Further, if memory is divided into sections or ‘pages’, the number of bytes in each page will also be counted in binary, as the addressing is based on the number of address bits used. Again, if 10 bits are used, 1024 bytes will be on each page and 1024 bytes will be exposed with each page swap. The 1024 definition facilitates discussions of this reality.
As with most things, the definition is important. ‘Kilobyte’ was defined as 1024 bytes because it accurately describes what is going on in a binary system and simplifies the discussion. Based on the comments to this blog post, this viewpoint has clearly been lost in time.
In the related topic of computer networks, where bits are described, there is no confusion because it is counting bits, not using bits to count bytes. So, saying 1000 bits/second or 1kbps accurately represents the data traffic. Introducing 1024 would not be helpful in this case because binary is not used to address or track data traffic.
The use of 1000 for ‘kilobyte’ dissociates what is going on in the hardware and is imprecise. Sure, if you want to please an uneducated consumer, you can play the hard drive manufactures’ game.
As for hard drive manufacturers, the same people who used Klingon years to inflate their MTBF numbers, I wouldn’t use their approach to justify any part of the discussion.