Remix.run Logo
1 kilobyte is precisely 1000 bytes?(waspdev.com)
117 points by surprisetalk 2 days ago | 266 comments
waffletower 2 days ago | parent | next [-]

The author decidedly has expert syndrome -- they deny both the history and rational behind memory units nomenclature. Memory measurements evolved utilizing binary organizational patterns used in computing architectures. While a proud French pedant might agree with the decimal normalization of memory units discussed, it aligns more closely to the metric system, and it may have benefits for laypeople, it fails to account for how memory is partitioned in historic and modern computing.

PeterStuer a day ago | parent | next [-]

I do agree up to a point as I still need to double take when I see MiB, but that said, I also do agree keeping SI unit prefixes standardized has great advantages.

So the "sane" options would be either not using SI for digital, or, what was chosen, change the colloquial prefixes in the digital world. The former would have been easier in the short term.

philipswood 2 days ago | parent | prev | next [-]

Yes, tomato's ARE actually a fruit.

But really!?

I'll keep calling it in nice round powers of two, thank you very much.

simondotau a day ago | parent | next [-]

Even more weirdly, pumpkins are berries. But that’s a botanical definition. In the kitchen they (and tomatoes) are classified as vegetables.

KellyCriterion a day ago | parent [-]

Same with cucumbers and a lot more "plants" :-)

assimpleaspossi a day ago | parent | prev [-]

Yes. Tomatoes are a fruit because the science says so. That non-scientific people call it something else does not change facts.

TonyStr a day ago | parent | next [-]

Depends if you're using the botanical definition or the (more common) culinary definition[0].

I would argue fruit and fruit are two words, one created semasiologically and the other created onomasiologically. Had we chosen a different pronunciation for one of those words, there would be no confusion about what fruits are.

[0] - https://en.wikipedia.org/wiki/Fruit#Botanical_vs._culinary

account42 a day ago | parent | prev | next [-]

Definitions that don't reflect peoples usage are not very useful definition.

whobre a day ago | parent | prev | next [-]

Context matters…

deadwanderer a day ago | parent | prev [-]

Knowledge is understanding that tomatoes are a fruit. Wisdom is understanding that they don't belong in a fruit salad.

Or...

Knowledge is understanding that ketchup is tomato jelly. Wisdom is refraining from putting it on your peanut butter and jelly sandwich.

ozozozd 2 days ago | parent | prev | next [-]

It’s not them denying it, it’s the LLM that generated this slop.

All they had to say was that the KiB et. al. were introduced in 1998, and the adoption has been slow.

And not “but a kilobyte can be 1000,” as if it’s an effort issue.

kevin_thibedeau 2 days ago | parent | next [-]

They are managed by different standards organizations. One doesn't like the other encroaching on its turf. "kilo" has only one official meaning as a base-10 scalar.

dietr1ch 2 days ago | parent | next [-]

I don't think of base 10 being meaningful in binary computers. Indexing 1k needs 10 bits regardless if you wanted 1000 or 1024, and the base 10 leaves some awkward holes.

In my mind base 10 only became relevant when disk drive manufacturers came up with disks with "weird" disk sizes (maybe they needed to reserve some space for internals, or it's just that the disk platters didn't like powers of two) and realised that a base 10 system gave them better looking marketing numbers. Who wants a 2.9TB drive when you can get a 3TB* drive for the same price?

NetMageSCW a day ago | parent | prev [-]

Who was appointed as arbiter of meaning for kilo? And by what right?

jibal a day ago | parent | prev [-]

There's no evidence of an LLM being involved.

Syzygies 2 days ago | parent | prev | next [-]

He probably uses Phillips head screws.

highhedgehog a day ago | parent [-]

wait, what is wrong with that?

tim333 a day ago | parent | next [-]

Dunno but there are two similar but slightly different cross head screw designs https://www.pbswisstools.com/en/news/detail/phillips-and-poz...

a day ago | parent | prev [-]
[deleted]
foobarbecue 2 days ago | parent | prev | next [-]

*rationale

waffletower a day ago | parent [-]

Thanks, noticed after edit disappeared

crazygringo 2 days ago | parent | prev | next [-]

What are you talking about? The article literally fully explains the rationale, as well as the history. It's not "denying" anything. Seems entirely reasonable and balanced to me.

waffletower 2 days ago | parent | next [-]

They are definitely denying the importance of 2-fold partitioning in computing architectures. VM_PAGE_SIZE is not defined with the value of '10000' for good reason (in many operating systems it is set to '16384').

senfiaj 2 days ago | parent | next [-]

That's why I said "usually acceptable depending on the context". In spoken language I also don't like the awkward and unusual pronunciation of "kibi". But I'll still prefer to write in KiB, especially if I document something.

Also If you open major Linux distro task managers, you'll be surprised to see that they often show in decimal units when "i" is missing from the prefix. Many utilities often avoid the confusing prefixes "KB", "MB"... and use "KiB", "MiB"...

crazygringo 2 days ago | parent | prev [-]

No they're not? They very specifically address it.

Why do you keep insisting the author is denying something when the author clearly acknowledges every single thing you're complaining about?

nixpulvis 2 days ago | parent | prev [-]

Yea I don't understand the issue here. SI is pretty clear, and this post explains the other standard a little bit.

It's really not all that crazy of a situation. What bothers me is when some applications call KiB KB, because they are old or lazy.

reaperducer a day ago | parent | next [-]

because they are old

I keep using "K" for kilobyte because it makes the children angry since they lack the ability to judge meaning from context.

ZoomZoomZoom 2 days ago | parent | prev [-]

...old lazy and wrong! Capital K is for Kelvin.

jibal a day ago | parent | prev [-]

None of your criticisms--which start with an absurd and meaningless ad hominem--apply to the actual content of the article.

Elsewhere you write

> They are definitely denying the importance of 2-fold partitioning in computing architectures.

No, they definitely aren't. There are no words in the article that deny anything at all.

kmm 2 days ago | parent | prev | next [-]

And a megabyte is depending on the context precisely 1000x1000=1,000,000 or 1024x1024=1,048,576 bytes*, except when you're talking about the classic 3.5 inch floppy disks, where "1.44 MB" stands for 1440x1024 bytes, or about 1.47 true MB or 1.41 MiB.

* Yeah, I read the article. Regardless of the IEC's noble attempt, in all my years of working with people and computers I've never heard anyone actually pronounce MiB (or write it out in full) as "mebibyte".

superjan 2 days ago | parent | next [-]

Well the 1.44 MB, was called that because it was 1440 KB, twice the capacity of the 720k floppy, and 4x the 360k floppy. It made perfect sense to me at that time.

okanat 2 days ago | parent [-]

It may "make sense" but that's actually a false equivalence. The raw disk space for a 3.5" high-density floppy disk for IBM PCs is 512 bytes per sector * 18 sectors per track * 80 tracks per side * 2 sides = 1,474,560 bytes. It is 1.47 MB or 1.40 MiB neither of which is 1440 KB or KiB. The 1440 number comes from Microsoft's FAT12 filesystem. That was the space that's left for files outside the allocation table.

Sectors per track or tracks per side is subject to change. Moreover a different filesystem may have non-linear growth of the MFT/superblock that'll have a different overhead.

https://en.wikipedia.org/wiki/List_of_floppy_disk_formats

fuzzfactor 16 hours ago | parent [-]

Not my downvote, good chart actually.

It is worse of a downer when there is a complete failure to make further sense like that, but I'll try to do something.

Of course one chart does not an expert make, I don't understand half of it but at least I worked with 3.5 floppies since they first came out.

3.5 floppies are "soft sectored" media and usually the drives were capable of handling non-standard arrangements too. What made non-standard numbers of sectors uncommon was it would require software most people were not using. DOS and Windows simply prepared virgin magnetic media with 2880 sectors, or reformatted them that way and that was about it.

PC's were already popular when 3.5 size came out, and most of the time they were not virgin magnetic media, they were purchased pre-formatted with 2880 sectors (of 512 bytes per sector) already on the entire floppy, of which fewer sectors were available for user data because a number of sectors are used up by the FAT filesystem overhead.

On the chart you see the 1440kb designation since each sector is considered 1/2 "kilobyte".

512 bytes is pretty close to half a kilobyte ain't it?

(The oddball 1680kb and 1720kb were slightly higher-density sectors, with more of them squeezed into the same size media, most people couldn't easily copy them without using an alternative to DOS or Windows. Sometimes used for games or installation media.)

With Windows when partitioning your drive if you want a 64 GB volume you would likely choose 64000 MB in either the GUI or Diskpart. Each of these GB is exactly 2880000 sectors for some reason ;)

But that's the size of the whole physical partition whether it contains only zeros or a file system. Then when you format it the NTFS filesystem has its own overhead.

pif 2 days ago | parent | prev | next [-]

> I've never heard

It doesn't matter. "kilo" means 1000. People are free to use it wrong if they wish.

tombert 2 days ago | parent | next [-]

All words are made up. They weren’t handed down from a deity, they were made up by humans to communicate ideas to other humans.

“Kilo” can mean what we want in different contexts and it’s really no more or less correct as long as both parties understand and are consistent in their usage to each other.

ablob 2 days ago | parent | next [-]

I find it concerning that kilo can mean both 10^3 and 2^10 depending on context. And that the context is not if you're speaking about computery stuff, but which program you use has almost certainly lead to avoidable bugs.

nixpulvis 2 days ago | parent | prev | next [-]

That's a terribly nihilistic outlook on language.

We agree to meaning to communicate and progress without endless debate and confusion.

SI is pretty clear for a reason.

SturgeonsLaw a day ago | parent | prev | next [-]

> “Kilo” can mean what we want in different contexts

Fair enough.

1000 watts is a kilowatt

1000 hertz is a kilohertz

1000 metres is a kilometre

1000 litres is a kilolitre

1000 joules is a kilojoule

1000 volts is a kilovolt

1000 newtons is a kilonewton

1000 pascals is a kilopascal

1024 bytes is a kilobyte, because that's what we're used to and we don't want to change to a new prefix

throw0101c 2 days ago | parent | prev | next [-]

>> It doesn't matter. "kilo" means 1000. People are free to use it wrong if they wish.

> All words are made up.

Yes, and the made up words of kilo and kibi were given specific definitions by the people who made them up:

* https://en.wikipedia.org/wiki/Metric_prefix

* https://en.wikipedia.org/wiki/Binary_prefix

> […] as long as both parties understand and are consistent in their usage to each other.

And if they don't? What happens then?

Perhaps it would be easier to use the words definitions as they are set up in standards and regulations so context is less of an issue.

* https://xkcd.com/1860/

NewJazz 2 days ago | parent | prev | next [-]

Yes!

(And by that I mean "what the fuck, no...")

bigDinosaur a day ago | parent | prev [-]

All you've done is created a homonym for no good reason at all.

bloppe 2 days ago | parent | prev | next [-]

If Bob says "kilobyte" to Alice, and Bob means 5432 bytes, and Alice perceives him to mean 5432 bytes, then in that context, "kilobyte" means 5432 bytes.

bruce343434 2 days ago | parent | next [-]

What are the odds of Charlie meeting Bob and Alice?

kazinator 2 days ago | parent | prev [-]

No, in that context, kilobyte means 1024 bytes, like in every other context. :)

lightedman 2 days ago | parent | prev | next [-]

Man let a drug dealer give me a binary 'kilo' of some drug. That's almost a free ounce included!

AngryData a day ago | parent [-]

In North America blackmarket drugs are often sold in pounds and ounces but measured in grams so you do see some rounding.

burnt-resistor a day ago | parent | prev | next [-]

Such a myopic view when reality and marketing is messier than dramatic self-righteousness. This unnecessary bikeshedding nonsense has already been solved by using mebi, kibi, etc. to disambiguate sloppy abuse of SI units.

NetMageSCW a day ago | parent [-]

Fortunately SI doesn’t get to own terms or prefixes and trying to enforce different usage by fiat fails in the real world, exactly as it should.

nixpulvis 2 days ago | parent | prev [-]

Exactly.

If you're talking loosely, then you can get away with it.

whichquestion 2 days ago | parent | prev | next [-]

I worked with networked attached storage systems at pib scale several years ago and we referred to things in gib/tib because it was significant when referring to the size of systems and we needed to be precise.

That being said, I think the difference between mib and mb is niche for most people

fc417fc802 2 days ago | parent [-]

Speaking of significant Pib vs PiB is 8x. I assume you meant the latter.

pwdisswordfishy 2 days ago | parent | prev | next [-]

> classic 3.5 inch floppy disks

90 mm floppy disks. https://jdebp.uk/FGA/floppy-discs-are-90mm-not-3-and-a-half-...

Which I have taken to calling 1440 KiB – accurate and pretty recognizable at the same time.

skissane a day ago | parent [-]

> 90 mm floppy disks. https://jdebp.uk/FGA/floppy-discs-are-90mm-not-3-and-a-half-...

That page is part right and part wrong.

It is right in claiming that "3.5-inch" floppies are actually 90 mm.

It is wrong in claiming that the earlier "5.25-inch" floppies weren't metric

"5.25-inch" floppies are actually 130 mm as standardised in ECMA-78 [0]

"8-inch" floppies are actually 200 mm as standardised in ECMA-69 [1]

Actually there's a few different ECMA standards for 130 and 200 mm floppies – the physical dimensions are the same, but using different recording mechanisms (FM vs MFM–those of a certain age may remember MFM as "double density", and those even older may remember FM as "single density"), and single-sided versus double-sided.

[0] ECMA-78: Data interchange on 130 mm flexible disk cartridges using MFM recording at 7 958 ftprad on 80 tracks on each side), June 1986: https://ecma-international.org/publications-and-standards/st...

[1] ECMA-69: Data interchange on 200 mm flexible disk cartridges using MFM recording at 13 262 ftprad on both sides, January 1981: https://ecma-international.org/publications-and-standards/st...

nixpulvis 2 days ago | parent | prev | next [-]

They should be more precise if they are talking about KiB in a context where the difference matters... luckily those contexts are usually written down.

burnt-resistor a day ago | parent | prev [-]

Interestingly, HD floppies actually are 2 "MB" unformatted without the various overhead. This is how 1.68 "MB" DMF is possible. Extra-high Density (ED) 2.88 "MB" is similarly 4 "MB" unformatted.

kstrauser 2 days ago | parent | prev | next [-]

I'm sticking with power-of-2 sizes. Invent a new word for decimal, metric units where appropriate. I proposed[0] "kitribytes", "metribytes", "gitribytes", etc. Just because "kilo" has a meaning in one context doesn't mean we're stuck with it in others. It's not as though the ancient Greeks originally meant "kilo" to mean "exactly 1,000". "Giga" just meant "giant". "Tera" is just "monster". SI doesn't have sole ownership for words meaning "much bigger than we can possibly count at a glance".

Donald Knuth himself said[1]:

> The members of those committees deserve credit for raising an important issue, but when I heard their proposal it seemed dead on arrival --- who would voluntarily want to use MiB for a maybe-byte?! So I came up with the suggestion above, and mentioned it on page 94 of my Introduction to MMIX. Now to my astonishment, I learn that the committee proposals have actually become an international standard. Still, I am extremely reluctant to adopt such funny-sounding terms; Jeffrey Harrow says "we're going to have to learn to love (and pronounce)" the new coinages, but he seems to assume that standards are automatically adopted just because they are there.

If Gordon Bell and Gene Amdahl used binary sizes -- and they did -- and Knuth thinks the new terms from the pre-existing units sound funny -- and they do -- then I feel like I'm in good company on this one.

0: https://honeypot.net/2017/06/11/introducing-metric-quantity....

1: https://www-cs-faculty.stanford.edu/~knuth/news99.html

svat 2 days ago | parent | next [-]

Knuth is not in favour of using kilo/mega/etc with power-of-2 meanings:

> I'm a big fan of binary numbers, but I have to admit that this convention flouts the widely accepted international standards for scientific prefixes.

He also calls it “an important issue” and had written “1000 MB = 1 gigabyte (GB), 1000 GB = 1 terabyte (TB), 1000 TB = 1 petabyte (PB), 1000 PB = 1 exabyte (EB), 1000 EB = 1 zettabyte (ZB), 1000 ZB = 1 yottabyte (YB)” in his MMIX book even before the new binary prefixes became an international standard.

He is merely complaining that the new names for the binary prefixes sound funny (and has his own proposal like “large megabyte” and notation MMB etc), but he's still using the kilo/mega/etc prefixes with decimal meanings.

fc417fc802 2 days ago | parent [-]

It's odd though. Metric prefixes are always lower case, so GB isn't valid metric. Further, outside of storage manufacturers attempting to inflate their numbers when does is ever make sense to mix power of ten with 8 bit bytes? Networking is always in bits per second, not bytes.

Edit: Disregard the metric bit but I think the rest still stands.

cornstalks 2 days ago | parent | next [-]

> Metric prefixes are always lower case, so GB isn't valid metric.

Ummm, what? https://en.wikipedia.org/wiki/Metric_prefix

tiagod a day ago | parent | prev [-]

I don't understand what you mean. kA is a perfectly valid SI unit.

crazygringo 2 days ago | parent | prev [-]

> Invent a new word for decimal, metric units where appropriate.

No, they already did the opposite with KiB, MiB.

Because most metric decimal units are used for non-computing things. Kilometers, etc. Are you seriously proposing that kilometers should be renamed kitrimeters because you think computing prefixes should take priority over every other domain of science and life?

kstrauser 2 days ago | parent [-]

Do you often convert between inherently binary units like RAM sizes and more appropriately decimal units like distances?

It would be annoying of one frequently found themselves calculating gigabytes per hectare. I don't think I've ever done that. The closest I've seen is measure magnetic tape density where you get weird units like "characters per inch", where neither "character" nor "inch" are the common units for their respective metrics.

crazygringo 2 days ago | parent [-]

I have no idea what that is supposed to have to do with anything.

megggan 44 minutes ago | parent | prev | next [-]

I can perhaps accept that 1kb != 1024 bytes. Maybe.

But then these fing idiots went on to define ”mibi bytes” and ”gibi bytes”, when there already existed perfectly valid and used nomenclature: meg and gig! I read their reasoning, still hate it. I bet they did it just in spite, just to show who’s the boss.

f33d5173 2 days ago | parent | prev | next [-]

A mile is exactly 1000 paces, or 4000 feet. You may disagree, but consider: the word mile come from latin for "one thousand". Therefore a mile must be 1000 of something, namely paces. I hope you find this argument convincing.

zahlman a day ago | parent | next [-]

5000, but a slightly shorter foot than the modern one.

https://en.wikipedia.org/wiki/Mile#Roman

https://en.wikipedia.org/wiki/Ancient_Roman_units_of_measure...

kazinator 2 days ago | parent | prev | next [-]

There is a "metric mile" which is 1500 m. This is something in the context of track and field athletics.

AdamN a day ago | parent | next [-]

Same with a Metric ton (a "tonne") which is one thousand kilograms (pretty close to an imperial ton).

userbinator 2 days ago | parent | prev | next [-]

There is also a "metric gallon", or 4L.

meatmanek 2 days ago | parent | prev [-]

Not to be confused with the 1600 meter or "1 mile" race which is commonly run in US track and field events (i.e. 4 times around a 400 meter track). At least that's within 1% of an actual mile.

fc417fc802 2 days ago | parent | prev | next [-]

Maybe after society has collapsed and been rebuilt we'll end up with km and cm having a weird ratio to the meter. Same for kg. At least celsius is just about impossible to screw up.

account42 a day ago | parent | next [-]

Celsius is already screwed up because it's not zero-based.

fc417fc802 a day ago | parent [-]

Celcius is eminently practical (similar to power of two prefixes). Absolute zero is completely irrelevant for day to day human life.

AngryData a day ago | parent | prev [-]

Celsius is just as arbitrary as farenheit so I wouldn't be so sure.

quietsegfault 2 days ago | parent | prev | next [-]

Webster’s dictionary defines a mile as …

flexagoon 2 days ago | parent | prev [-]

I think your comment is supposed to be sarcastic, but I'm not sure what the sarcasmcis about? Yes, a mile is 1000 paces. That is why it's called a mile. It's not an "argument", it's just what a mile is.

mrb 2 days ago | parent | prev | next [-]

Whenever this discussion comes up I liked to point out that even in the computer industry, prefixes like kilo/mega/etc more often mean a power of 10 than a power of 2:

I gave some examples in my post https://blog.zorinaq.com/decimal-prefixes-are-more-common-th...

soneil 2 days ago | parent | next [-]

They almost always mean power of 10, unless you're discussing RAM, RAM addressing, or RAM pages. (or flash, which has inherited most of the same for most of the same reasons)

nayuki 2 days ago | parent | prev | next [-]

Nice page, and nice link to Colin Percival's page too! Let me toss you one example: CDs are marketed in mebibytes. A "650 MB" burnable CD is actually 650 MiB ≈ 682 MB, and likewise for "700 MB" being actually 700 MiB ≈ 734 MB. DVD and BD do use metric prefixes correctly, like you pointed out. Back in the day, I archived my data on CD/DVD/BD, and I planned out my disc burns to have only about 1 to 10 MB of wasted space, so I had to be very aware of the true definition and exactly how much capacity was available for me to use.

thaumasiotes 2 days ago | parent | prev | next [-]

> The only few places where binary prefixes are used are to refer to RAM capacity and file sizes, whereas decimal prefixes apply to all other areas and all units (not "only bitrates"): storage capacity, clock frequency, stream bandwidth, baud, pixel numbers, data throughput, processing power

Storage capacity also uses binary prefixes. The distinction here isn't that file sizes are reported in binary numbers and storage capacity is reported in decimal numbers. It's that software uses binary numbers and hard drive manufacturers use decimal numbers. You don't see df reporting files in binary units and capacities in decimal units.

Of that large list of measurements, only bandwidth is measured in bytes, making the argument mostly an exercise in sophistry. You can't convince anyone that KB means 1000 bytes by arguing that kHz means 1000 Hz.

2 days ago | parent | prev [-]
[deleted]
pjdesno 2 days ago | parent | prev | next [-]

I had a computer architecture prof (a reasonably accomplished one, too) who thought that all CS units should be binary, e.g. Gigabit Ethernet should be 931Mbit/s, not 1000MBit/s.

I disagreed strongly - I think X-per-second should be decimal, to correspond to Hertz. But for quantity, binary seems better. (modern CS papers tend to use MiB, GiB etc. as abbreviations for the binary units)

Fun fact - for a long time consumer SSDs had roughly 7.37% over-provisioning, because that's what you get when you put X GB (binary) of raw flash into a box, and advertise it as X GB (decimal) of usable storage. (probably a bit less, as a few blocks of the X binary GB of flash would probably be DOA) With TLC, QLC, and SLC-mode caching in modern drives the numbers aren't as simple anymore, though.

thayne 2 days ago | parent | next [-]

It makes it inconvenient to do things like estimate how long it will take to transfer a 10GiB file. Both because of the the difference between G and Gi, and because one is in bytes and the other is in bits.

There are probably cases where corresponding to Hz, is useful, but for most users I think 119MiB/s is more useful than 1Gbit/s.

ralferoo 2 days ago | parent | prev | next [-]

There's a good reason that gigabit ethernet is 1000MBit/s and that's because it was defined in decimal from the start. We had 1MBit/s, then 10MBit/s, then 100MBit/s then 1000MBit/s and now 10Gbit/s.

Interestingly, from 10GBit/s, we now also have binary divisions, so 5GBit/s and 2.5GBit/s.

Even at slower speeds, these were traditionally always decimal based - we call it 50bps, 100bps, 150bps, 300bps, 1200bps, 2400bps, 9600bps, 19200bps and then we had the odd one out - 56k (actually 57600bps) where the k means 1024 (approximately), and the first and last common speed to use base 2 kilo. Once you get into MBps it's back to decimal.

icedchai 2 days ago | parent | next [-]

To add further confusion, 57600 was actually a serial port speed, from the computer to the modem, which was higher than the maximum physical line (modem) speed. Many people ran higher serial port speeds to take advantage of compression (115200 was common.)

56000 BPS was the bitrate you could get out of a DS0 channel, which is the digital version of a normal phone line. A DS0 is actually 64000 BPS, but 1 bit out of 8 is "robbed" for overhead/signalling. An analog phone lined got sampled to 56000 BPS, but lines were very noisy, which was fine for voice, but not data.

7 bits per sample * 8000 samples per second = 56000, not 57600. That was theoretical maximum bandwidth! The FCC also capped modems at 53K or something, so you couldn't even get 56000, not even on a good day.

krater23 2 days ago | parent | prev | next [-]

This has nothing to do with the 1024, it has todo with the 1200 and the multiples of it and the 14k and 28k modems where everyone just cut off the last some hundred bytes because you never reached that speed anyway.

jiveturkey 2 days ago | parent | prev [-]

> that's because it was defined in decimal from the start

I mean, that's not quite it. By that logic, had memory been defined in decimal from the start (happenstance), we'd have 4000 byte pages.

Now ethernet is interesting ... the data rates are defined in decimal, but almost everything else about it is octets! Starting with the preamble. But the payload is up to an annoying 1500 (decimal) octets. The _minimum_ frame length is defined for CSMA/CD to work, but the max could have been anything.

soneil 2 days ago | parent | prev | next [-]

This is the bit (sic) that drives me nuts.

RAM had binary sizing for perfectly practical reasons. Nothing else did (until SSDs inherited RAM's architecture).

We apply it to all the wrong things mostly because the first home computers had nothing but RAM, so binary sizing was the only explanation that was ever needed. And 50 years later we're sticking to that story.

gpm 2 days ago | parent | next [-]

RAM having binary sizing is a perfectly good reason for hard drives having binary sized sectors (more efficient swap, memory maps, etc), which in turn justifies all of hard disks being sized in binary.

wvenable 2 days ago | parent | prev | next [-]

Literally every number in a computer is base-2, not just RAM addressing. Everything is ulimately bits, pins, and wires. The physical and logical interface between your oddly sized disk and your computer? Also some base-2.

fc417fc802 2 days ago | parent | next [-]

Even the disk sectors are in base 2. It's only the marketing that's in base 10.

hmry 2 days ago | parent | prev [-]

Not everything is made from wires and transistors. And that's why these things are usually not measured in powers of 2:

- magnetic media

- optical media

- radio waves

- time

There's good reasons for having power-of-2 sectors (they need to get loaded into RAM), but there's really no compelling reason to have a power-of-2 number of sectors. If you can fit 397 sectors, only putting in 256 is wasteful.

krater23 2 days ago | parent | prev [-]

Nope. The first home computers like the C64 had RAM and sectors on disc, which in case of the C64 means 256 bytes. And there it is again, the smaller base of 1024.

Just later, some marketing assholes thought they could better sell their hard drives when they lie about the size and weasel out of legal issues with redefining the units.

wtallis 2 days ago | parent | prev | next [-]

NAND flash has overprovisioning even on a per-die basis, eg. Micron's 256Gbit first-generation 3D NAND had 548 blocks per plane instead of 512, and the pages were 16384+2208 bytes. That left space both for defects and ECC while still being able to provide at least the nominal capacity (in power of two units) with good yield, but meant the true number of memory cells was more than 20% higher than implied by the nominal capacity.

The decimal-vs-binary discrepancy is used more as slack space to cope with the inconvenience of having to erase whole 16MB blocks at a time while allowing the host to send write commands as small as 512 bytes. Given the limited number of program/erase cycles that any flash memory cell can withstand, and the enormous performance penalty that would result from doing 16MB read-modify-write cycles for any smaller host writes, you need way more spare area than just a small multiple of the erase block size. A small portion of the spare area is also necessary to store the logical to physical address mappings, typically on the order of 1GB per 1TB when tracking allocations at 4kB granularity.

wmf 2 days ago | parent | prev | next [-]

An even bigger problem is that networks are measured in bits while RAM and storage are in bytes. I'm sure this leads to plenty of confusion when people see a 120 meg download on their 1 gig network.

(The old excuse was that networks are serial but they haven't been serial for decades.)

bombcar 2 days ago | parent | prev | next [-]

Wirespeeds and bitrate and baud and all that stuff is vastly confusing when you start looking into it - because it's hard to even define what a "bit on the wire" is when everything has to be encoded in such a way that it can be decoded (specialized protocols can go FASTER than normal ones on the same wire and the same mechanism if they can guarantee certain things - like never having four zero bits in a row).

waffletower 2 days ago | parent | prev [-]

I can see a precision argument for binary represented frequencies. A systems programmer would value this. A musician would not.

fsckboy 2 days ago | parent | next [-]

musicians use numbering systems that are actually far more confused than anything discussed here. how many notes in an OCTave? "do re mi fa so la ti do" is eight, but that last do is part of the next octave, so an OCTave is 7 notes. (if we count transitions, same thing, starting at the first zero do, re is 1, ... again 7.

the same and even more confusion is engendered when talking about "fifths" etc.

waffletower 2 days ago | parent [-]

The 7 note scale you suggest (do re mi fa so la ti do) is comprised of different intervals (2 2 1 2 2 2 1) in the 12-fold equal tempered scale. There are infinite ways of exploring an octave in music, but unfortunately listener demand for such exploration is near infinitesimal.

AlotOfReading 2 days ago | parent | prev [-]

Musicians often use equal temperament, so they have their own numerical crimes to answer for.

cmovq 2 days ago | parent | prev | next [-]

The mistake was using the "Kibi" prefix. "Kibibyte" just sounds a bit silly when said out loud.

kstrauser 2 days ago | parent | next [-]

Yes, 2**10 times this, yes.

Call me calcitrant, reactionary, or whatever, but I will not say kibibyte out loud. It's a dumb word and I'm not using it. It was a horrible choice.

ralferoo 2 days ago | parent | next [-]

They should call their stupid SI power-of-10 units kisibyte instead.

nacozarina a day ago | parent | prev [-]

you'll eat your kibbles & bits and like it !

Symbiote 2 days ago | parent | prev | next [-]

"Giga" was considered to sound silly until it became common and we no longer care. "Yotta" sounds silly (to me) now.

sippeangelo 2 days ago | parent | next [-]

"Tera" always sounded cool though.

2 days ago | parent | prev | next [-]
[deleted]
aidenn0 a day ago | parent | prev | next [-]

1.21 Gigawatts doesn't sound silly at all!

bombcar 2 days ago | parent | prev [-]

Surely you mean Gibi ;)

j2kun 2 days ago | parent | prev | next [-]

When I read "KiB" I say "kib" and it's fine. Similar for GiB, TiB, PiB.

"I bought a two tib SSD."

"I just want to serve five pibs."

fsckboy 2 days ago | parent [-]

>"I bought a two tib SSD."

no you didn't, that doesn't exist, you bought 2 trillion bytes, 99 billion bytes short

cestith a day ago | parent | prev | next [-]

I usually just say kilobyte when speaking, and say “binary kilobyte” or “decimal kilobyte” if it’s not clear from context. I still (usually, but I forget) use the IEC symbols when I mean binary and the SI symbols when I mean decimal. The extra ‘i’ doesn’t cost that much.

jihadjihad 2 days ago | parent | prev | next [-]

"mebi" and "gibi" aren't any better, last one in particular if you say it as "jibby-bytes"

robobro 2 days ago | parent | prev | next [-]

Does it really matter if it sounds silly?

Blackthorn 2 days ago | parent [-]

Considering it meant people didn't use it, yes.

bloppe 2 days ago | parent | prev [-]

Actually, it sounds very serious and appropriate.

bombcar 2 days ago | parent [-]

Studio Kibi

PostOnce 2 days ago | parent | prev | next [-]

There is a counterproductive obsession with powers of 10.

Sometimes, other systems just make more sense.

For example, for time, or angles, or bytes. There are properties of certain numbers (or bases) that make everything descending from them easier to deal with.

for angles and time (and feet): https://en.wikipedia.org/wiki/Superior_highly_composite_numb...

For other problems we use base 2, 3, 8, 16, or 10.

Must we treat metric as a hammer, and every possible problem as a nail?

its_magic 2 days ago | parent | next [-]

Agreed. Metric is stupid.

The ancient Sumerians used multiples of 60, as we continue to do for time and angles (which are related) today. It makes perfect sense. 60 is divisible by 2, 3, 4, 5, and 6, which makes it easy to use in calculations. Even the metric people are not so crazy as to propose replacing these with powers of 10.

Same with pounds, for example. A pound is 16 ounces, which can be divided 4 times without involving any fractions. Try that with metric.

Then there's temperature. Fahrenheit just works more naturally over the human-scale temperature range without involving fractions. Celsius kind of sucks by comparison.

kalaksi a day ago | parent | next [-]

> Same with pounds, for example. A pound is 16 ounces, which can be divided 4 times without involving any fractions. Try that with metric.

Not sure if you're actually serious... 1 kg is 1000 g, dividing with 4 gets you 250 g, no fractions. And no need to remember arbitrary names or numbers for conversions.

> Then there's temperature. Fahrenheit just works more naturally over the human-scale temperature range without involving fractions. Celsius kind of sucks by comparison.

Again, I'm not sure I get it. With celsius, 0°C is freezing temperature of water and 100°C is boiling point of water. For fahrenheit it was something like 32 and 212? And in every day use, people don't need fractions, only full degrees. Celsius also aligns well with Kelvins without fractions (unlike fahrenheit).

bonsai_spool a day ago | parent | prev | next [-]

> A pound is 16 ounces, which can be divided 4 times without involving any fractions. Try that with metric.

1000 g, 500 g, 250 g, 125 g

I also don't understand the fear around fractions - we deal with halves, quarters and fifths all the time in the natural world.

mcmoor 2 days ago | parent | prev | next [-]

> even the metric people are not so crazy

No, they were absolutely that crazy [1]. Luckily the proposal fell through.

1. https://en.wikipedia.org/wiki/Decimal_time

notorandit a day ago | parent | prev [-]

And 60 can be also divided by 10, 12, 15 and 30.

And you can go with 120 or, better 210 so you get 7 in.

Pure madness.

fc417fc802 2 days ago | parent | prev [-]

Now that I think about it, I see KiB and kb all the time but I don't know that I've ever encountered Kib or kB in the wild. Maybe I'm in a bubble? Or maybe we should accept that kb is power of 10 but kB is power of two?

Well I guess we already basically have this in practice since Ki can be shortened to K seeing as metric prefixes are always lower case and we clearly aren't talking about kelvin bytes.

Flimm a day ago | parent [-]

Uppercase "B" stands for byte, and lowercase "b" stands for bit. But it's very common for people to miss the distinction, sadly, even professionals are sloppy.

zetanor 2 days ago | parent | prev | next [-]

To clear up any confusion, let's compromise at a 1012-byte kilobyte.

account42 a day ago | parent | next [-]

So should a megabyte be 1012 * 1012 = 1024144 bytes or (1000 * 1000 + 1024 * 1024) / 2 = 1024288 bytes?

Perhaps we can simplify this compromise and have a kilobyte as 1024 bytes, a megabyte as 1024000 bytes, a gigabyte as 1048576000 bytes and a terabyte as 1048576000000 bytes.

noosphr 2 days ago | parent | prev | next [-]

I like the binch better, it's like an inch, but its 25.6 mm instead.

2 days ago | parent | prev [-]
[deleted]
ineedasername 2 days ago | parent | prev | next [-]

> Why does 1000 still make more sense?

The author doesn’t actually answer their question, unless I missed something?

They go on to make a few more observations, and say finally only that the current different definitions are sometimes confusing, to non experts.

I don’t see much of an argument here for changing anything. Some non experts experience minor confusion about two things that are different, did I miss something bigger in this?

lukan 2 days ago | parent | next [-]

Because it would be literally correct. Kilo means 1000, not 1024.

int_19h 2 days ago | parent | next [-]

"kilo" means what people take it to mean in any particular context. In computing, it is overwhelmingly power of two even today, and if you don't use it in this manner you have to clarify to be understood properly.

ratrace 2 days ago | parent | prev | next [-]

It would be "literally correct" for you but obviously incorrect to everybody else who has the understanding that a kilobyte = 1024 bytes

NetMageSCW a day ago | parent | prev [-]

As a (computer) expert, kilo clearly means 1024 in my domain.

quanwinn 2 days ago | parent | prev [-]

Was reading this and thought the same thing.

ValdikSS 2 days ago | parent | prev | next [-]

>Why do we often say 1 kilobyte = 1024 bytes?

Because Windows, and only Windows, shows it this way. It is official and documented: https://devblogs.microsoft.com/oldnewthing/20090611-00/?p=17...

> Explorer is just following existing practice. Everybody (to within experimental error) refers to 1024 bytes as a kilobyte, not a kibibyte. If Explorer were to switch to the term kibibyte, it would merely be showing users information in a form they cannot understand, and for what purpose? So you can feel superior because you know what that term means and other people don’t.

1718627440 3 hours ago | parent | next [-]

> Because Windows, and only Windows

ls does unless you pass --si.

nitwit005 2 days ago | parent | prev | next [-]

Raymond Chen's blog isn't exactly official documentation, even if it's frequently better than the documentation.

ValdikSS 2 days ago | parent | prev | next [-]

I know the only other software with this kind of error: https://github.com/lsd-rs/lsd/issues/807

SkiFire13 2 days ago | parent | prev [-]

Windows also uses KB as measure unit which does not make sense (it's either kB or KiB)

quotemstr 2 days ago | parent | prev | next [-]

It's too late. Powers-of-two won. I'm the sort of person who uses "whom" in English, but even I acknowledge that using "KB" to mean 1,000, not 1,024, can only breed confusion. The purpose of language is to communicate. I'm all for pedantry when it's compatible with clarity, but we can't reconcile the two goals here.

eviks 2 days ago | parent | next [-]

No it didn't, look at your flash/hard drive labels. Also, there has been confusion since the beginning, and the core cause of confusion is refusing to use the common meaning of K, so insisting on that is just perpetuating said confusion

NetMageSCW a day ago | parent [-]

And what is the common meaning of K? K was used to mean 1024 before SI was standard.

digiown 2 days ago | parent | prev [-]

Is it? Outside of Windows, I rarely ever see KB used to mean 1024 anymore. Linux and Mac usually uses KB for 1000, and "K" or "Ki" or "KiB" for 1024.

1718627440 3 hours ago | parent | next [-]

I do not know what "Linux" you are using.

    user@machine:~$ python3
    >>> with open('/tmp/a', 'wb') as f:
    ...     f.write (b'a'*1000);
    ... 
    1000
    >>> with open('/tmp/b', 'wb') as f:
    ...     f.write (b'a'*1024);
    ... 
    1024

    $ ll /tmp -h
    -rw-r--r-- 1 user user 1000 Feb  5 10:40 a
    -rw-r--r-- 1 user user 1.0K Feb  5 10:40 b
none_to_remain 2 days ago | parent | prev [-]

KiB is a an abbreviation for "kilobyte" which emphasizes that it means 1024.

nerdsniper 2 days ago | parent | prev | next [-]

Final edit:

This ambiguity is documented at least back to 1984, by IBM, the pre-eminent computer company of the time.

In 1972 IBM started selling the IBM 3333 magnetic disk drive. This product catalog [0] from 1979 shows them marketing the corresponding disks as "100 million bytes" or "200 million bytes" (3336 mdl 1 and 3336 mdl 11, respectively). By 1984, those same disks were marketed in the "IBM Input/Output Device Summary"[1] (which was intended for a customer audience) as "100MB" and "200MB"

0: (PDF page 281) "IBM 3330 DISK STORAGE" http://electronicsandbooks.com/edt/manual/Hardware/I/IBM%20w...

1: (PDF page 38, labeled page 2-7, Fig 2-4) http://electronicsandbooks.com/edt/manual/Hardware/I/IBM%20w...

Also, hats off to http://electronicsandbooks.com/ for keeping such incredible records available for the internet to browse.

-------

Edit: The below is wrong. Older experience has corrected me - there has always been ambiguity (perhaps bifurcated between CPU/OS and storage domains). "And that with such great confidence!", indeed.

-------

The article presents wishful thinking. The wish is for "kilobyte" to have one meaning. For the majority of its existence, it had only one meaning - 1024 bytes. Now it has an ambiguous meaning. People wish for an unambiguous term for 1000 bits, however that word does not exist. People also might wish that others use kibibyte any time they reference 1024 bytes, but that is also wishful thinking.

The author's wishful thinking is falsely presented as fact.

I think kilobyte was the wrong word to ever use for 1024 bytes, and I'd love to go back in time to tell computer scientists that they needed to invent a new prefix to mean "1,024" / "2^10" of something, which kilo- never meant before kilobit / kilobyte were invented. Kibi- is fine, the phonetics sound slightly silly to native English speakers, but the 'bi' indicates binary and I think that's reasonable.

I'm just not going to fool myself with wishful thinking. If, in arrogance or self-righteousness, one simply assumes that every time they see "kilobyte" it means 1,000 bytes - then they will make many, many failures. We will always have to take care to verify whether "kilobyte" means 1,000 or 1,024 bytes before implementing something which relies on that for correctness.

cedilla 2 days ago | parent | next [-]

You've got it exactly the wrong way around. And that with such great confidence!

There was always a confusion about whether a kilobyte was 1000 or 1024 bytes. Early diskettes always used 1000, only when the 8 bit home computer era started was the 1024 convention firmly established.

Before that it made no sense to talk about kilo as 1024. Earlier computers measured space in records and words, and I guess you can see how in 1960, no one would use kilo to mean 1024 for a 13 bit computer with 40 byte records. A kiloword was, naturally, 1000 words, so why would a kilobyte be 1024?

1024 bearing near ubiquitous was only the case in the 90s or so - except for drive manufacturing and signal processing. Binary prefixes didn't invent the confusion, they were a partial solution. As you point out, while it's possible to clearly indicate binary prefixes, we have no unambiguous notation for decimal bytes.

Sophira 2 days ago | parent | next [-]

> Early diskettes always used 1000

Even worse, the 3.5" HD floppy disk format used a confusing combination of the two. Its true capacity (when formatted as FAT12) is 1,474,560 bytes. Divide that by 1024 and you get 1440KB; divide that by 1000 and you get the oft-quoted (and often printed on the disk itself) "1.44MB", which is inaccurate no matter how you look at it.

theamk 2 days ago | parent | prev | next [-]

it's, way older in than the 1990's! In computering, "K" always meant 1024 at least from 1970's.

Example: in 1972, DEC PDP 11/40 handbook [0] said on first page: "16-bit word (two 8-bit bytes), direct addressing of 32K 16-bit words or 64K 8-bit bytes (K = 1024)". Same with Intel - in 1977 [1], they proudly said "Static 1K RAMs" on the first page.

[0] https://pdos.csail.mit.edu/6.828/2005/readings/pdp11-40.pdf

[1] https://deramp.com/downloads/mfe_archive/050-Component%20Spe...

angst_ridden 2 days ago | parent | prev | next [-]

It was earlier than the 90s, and came with popular 8-bit CPUs in the 80s. The Z-80 microprocessor could address 64kb (which was 65,536 bytes) on its 16-bit address bus.

Similarly, the 4104 chip was a "4kb x 1 bit" RAM chip and stored 4096 bits. You'd see this in the whole 41xx series, and beyond.

NetMageSCW a day ago | parent | prev | next [-]

As someone using computers before the 90s, it was well established at least a decade before that.

snozolli 2 days ago | parent | prev | next [-]

only when the 8 bit home computer era started was the 1024 convention firmly established.

That's the microcomputer era that has defined the vast majority of our relationship with computers.

IMO, having lived through this era, the only people pushing 1,000 byte kilobytes were storage manufacturers, because it allows them to bump their numbers up.

https://www.latimes.com/archives/la-xpm-2007-nov-03-fi-seaga...

zephen 2 days ago | parent | prev [-]

> 1024 bearing near ubiquitous was only the case in the 90s or so

More like late 60s. In fact, in the 70s and 80s, I remember the storage vendors being excoriated for "lying" by following the SI standard.

There were two proposals to fix things in the late 60s, by Donald Morrison and Donald Knuth. Neither were accepted.

Another article suggesting we just roll over and accept the decimal versions is here:

https://cacm.acm.org/opinion/si-and-binary-prefixes-clearing...

This article helpfully explains that decimal KB has been "standard" since the very late 90s.

But when such an august personality as Donald Knuth declares the proposal DOA, I have no heartburn using binary KB.

https://www-cs-faculty.stanford.edu/~knuth/news99.html

happytoexplain 2 days ago | parent | prev | next [-]

Good lord, arrogance and self-righteousness? You're blowing the article out of proportion. They don't say anything non-factual or unreasonable - why inject hostility where none is called for?

In fact, they practically say the same exact thing you have said: In a nutshell, base-10 prefixes were used for base-2 numbers, and now it's hard to undo that standard in practice. They didn't say anything about making assumptions. The only difference is that that the author wants to keep trying, and you don't think it's possible? Which is perfectly fine. It's just not as dramatic as your tone implies.

nerdsniper 2 days ago | parent | next [-]

I'm not calling the author arrogant or self-righteous. I stated that if a hypothetical person simply assumes that every "kilobyte" they come across is 1,000 bytes, that they are doomed to frequent failures. I implied that for someone to hypothetically adhere to that internal dogma even in the face of impending failures, the primary reasons would be either arrogance or self-righteousness.

adammarples 2 days ago | parent | prev [-]

I don't read any drama or hostility, just a discussion about names. OP says that kilobyte means one thing, the commenter says that it means two things and just saying it doesn't can't make that true. I agree, after all, we don't get to choose the names for things that we would like.

Dwedit 2 days ago | parent | prev | next [-]

At least it's not a total bizarro unit like "Floppy Disk Megabyte", equal to 1024000 bytes.

soneil 2 days ago | parent | prev | next [-]

It goes back way further than that. The first IBM harddrive was the IBM 350 for the IBM 305 RAMDAC. It was 5 million characters. Not bytes, bytes weren't "a thing" yet. 5,000,000 characters. The very first harddrive was base-10.

Here's my theory. In the beginning, everything was base10. Because humans.

Binary addressing made sense for RAM. Especially since it makes decoding address lines into chip selects (or slabs of core, or whatever) a piece of cake, having chips be a round number in binary made life easier for everyone.

Then early DOS systems (CP/M comes to mind particularly) mapped disk sectors to RAM regions, so to enable this shortcut, disk sectors became RAM-shaped. The 512-byte sector was born. File sizes can be written in bytes, but what actually matters is how many sectors they take up. So file sizing inherited this shortcut.

But these shortcuts never affected "real computers", only the hamstrung crap people were running at home.

So today we have multiple ecosystems. Some born out of real computers, some with a heavy DOS inheritance. Some of us were taught DOS's limitations as truth, and some of us weren't.

rep_lodsb 2 days ago | parent | next [-]

RAMAC, not RAMDAC: https://en.wikipedia.org/wiki/History_of_IBM_magnetic_disk_d...

However it doesn't seem to be divided into sectors at all, more like each track is like a loop of magnetic tape. In that context it makes a bit more sense to use decimal units, measuring in bits per second like for serial comms.

Or maybe there were some extra characters used for ECC? 5 million / 100 / 100 = 500 characters per track, leaves 72 bits over for that purpose if the actual size was 512.

First floppy disks - also from IBM - had 128-byte sectors. IIRC, it was chosen because it was the smallest power of two that could store an 80-column line of text (made standard by IBM punched cards).

Disk controllers need to know how many bytes to read for each sector, and the easiest way to do this is by detecting overflow of an n-bit counter. Comparing with 80 or 100 would take more circuitry.

kstrauser 2 days ago | parent | prev [-]

Almost all computers have used power-of-2 sized sectors. The alternative would involve wasted bits (e.g. you can't store as much information in 256 1000-byte units as 256 1024-byte units, so you lose address space) or have to write multiplies and divides and modulos in filesystem code running on machines that don't have opcodes for any of those.

You can get away with those on machines with 64 bit address spaces and TFLOPs of math capacity. You can't on anything older or smaller.

leoc 2 days ago | parent | prev | next [-]

> The article presents wishful thinking. The wish is for "kilobyte" to have one meaning. For the majority of its existence, it had only one meaning - 1024 bytes. Now it has an ambiguous meaning. People wish for an unambiguous term for 1000 bits, however that word does not exist. People also might wish that others use kibibyte any time they reference 1024 bytes, but that is also wishful thinking.

> The author's wishful thinking is falsely presented as fact.

There's good reason why the meanings of SI prefixes aren't set by convention or by common usage or by immemorial tradition, but by the SI. We had several thousand years of setting weights and measures by local and trade tradition and it was a nightmare, which is how we ended up with the SI. It's not a good show for computing to come along and immediately recreate the long and short ton.

nayuki 2 days ago | parent | next [-]

> setting weights and measures by local and trade tradition and it was a nightmare

Adding to your point, it is human nature to create industry- or context-specific units and refuse to play with others.

In the non-metric world, I see examples like: Paper publishing uses points (1/72 inch), metal machinists use thousands of an inch, woodworkers use feet and inches and binary fractions, land surveyors use decimal feet (unusual!), waist circumference is in inches, body height is in feet and inches, but you buy fabric by the yard, airplane altitudes are in hundreds to tens of thousands of feet instead of decimal miles. Crude oil is traded in barrels but gasoline is dispensed in gallons. Everyone thinks their usage of units and numbers is intuitive and optimal, and everyone refuses to change.

In the metric(ish) world, I still see many tensions. The micron is a common alternate name for the micrometre, yet why don't we have a millin or nanon or picon? The solution is to eliminate the micron. I've seen the angstrom (0.1 nm) in spectroscopy and in the discussion of CPU transistor sizes, yet it diverts attention away from the picometre. The bar (100 kPa) is popular in talking about things like tire pressure because it's nearly 1 atmosphere. The mmHg is a unit of pressure that sounds metric but is not; the correct unit is pascal. No one in astronomy uses mega/giga/tera/peta/etc.-metres; instead they use AU and parsec and (thousand, million, billion) light-years. Particle physics use eV/keV/MeV instead of some units around the picojoule.

Having a grab bag of units and domains that don't talk to each other is indeed the natural state of things. To put your foot down and say no, your industry does not get its own special snowflake unit, stop that nonsense and use the standardized unit - that takes real effort to achieve.

card_zero 2 days ago | parent | prev [-]

The SI should just have set kilobyte to 1024 in acquiescence to the established standard, instead of being defensive about keeping a strict meaning of the prefix.

amelius 2 days ago | parent | prev | next [-]

Are you talking about imperial or metric kilobyte?

pif 2 days ago | parent | prev | next [-]

> Edit: I'm wrong.

You need character to admit that. I bow to you.

BrandoElFollito 2 days ago | parent | prev | next [-]

> Edit: I'm wrong. Older experience has corrected me - there has always been ambiguity "And that with such great confidence!", indeed.

Kudos for getting back. (and closing the tap of "you are wrong" comments :))

amelius 2 days ago | parent | prev | next [-]

At this point I just wish 2^10 didn't end up so close to 1000.

hackyhacky 2 days ago | parent [-]

To avoid confusion, I always use "kilobyte" to refer to exactly 512 bytes.

dgacmu 2 days ago | parent | prev | next [-]

And networking - we've almost always used standard SI prefixes for, e.g., bandwidth. 1 gigabit per second == 1 * 10^9.

Which makes it really @#ing annoying when you have things like "I want to transmit 8 gigabytes (meaning gibibytes, 2*30) over a 1 gigabit/s link, how long will it take?". Welcome to every networking class in the 90s.

We should continue moving towards a world where 2*k prefixes have separate names and we use SI prefixes only for their precise base-10 meanings. The past is polluted but we hopefully have hundreds of years ahead of us to do things better.

kstrauser 2 days ago | parent | prev | next [-]

People were using metric words for binary numbers since at least the late 1950s: https://en.wikipedia.org/wiki/Timeline_of_binary_prefixes#19...

Which doesn't make it more correct, of course, even through I strongly believe believe that it is (where appropriate for things like memory sizes). Just saying, it goes much further back than 1984.

NetMageSCW a day ago | parent [-]

It means it existed before modern SI, so it was SI that appropriated the wrong definition :)

pif 2 days ago | parent | prev [-]

> The wish is for "kilobyte" to have one meaning.

Which is the reality. "kilobyte" means "1000 bytes". There's no possible discussion over this fact.

Many people have been using it wrong for decades, but its literal value did not change.

marssaxman 2 days ago | parent | next [-]

That is a prescriptivist way of thinking about language, which is useful if you enjoy feeling righteous about correctness, but not so helpful for understanding how communication actually works. In reality-reality, "kilobyte" may mean either "1000 bytes" or "1024 bytes", depending on who is saying it, whom they are saying it to, and what they are saying it about.

You are free to intend only one meaning in your own communication, but you may sometimes find yourself being misunderstood: that, too, is reality.

bigstrat2003 2 days ago | parent | prev | next [-]

In computers, "kilobyte" has a context dependent meaning. It has been thus for decades. It does not only mean 1000 bytes.

happytoexplain 2 days ago | parent | prev | next [-]

The line between "literal" and "colloquial" becomes blurred when a word consisting of strongly-defined parts ("kilo") gets used in official, standardized contexts with a different meaning.

In fact, this is the only case I can think of where that has ever happened.

zephen 2 days ago | parent | prev [-]

Knuth thought the international standard promulgated naming (kibibyte) was DOA.

https://www-cs-faculty.stanford.edu/~knuth/news99.html

And he was right.

Context is important.

"K" is an excellent prefix for 1024 bytes when working with small computers, and a metric shit ton of time has been saved by standardizing on that.

When you get to bigger units, marketing intervenes, and, as other commenters have pointed out, we have the storage standard of MB == 1000 * 1024.

But why is that? Certainly it's because of the marketing, but also it's because KB has been standardized for bytes.

> Which is the reality. "kilobyte" means "1000 bytes". There's no possible discussion over this fact.

You couldn't be more wrong. Absolutely nobody talks about 8K bytes of memory and means 8000.

breakage 6 hours ago | parent | prev | next [-]

> This "kilobyte = 1024 bytes" rule is actually an old (often confusing) convention. In the tech industry there is still huge inertia, this old convention is still used by RAM manufacturers (JEDEC), tons of software and some operating systems (such as Windows).

So, let’s all pretend that’s not the case and say how things REALLY are? Umm- I don’t think life works that way. If a large part of the world and recorded history works a particular way, it will in-part stay that way.

For example, many people believed we’d basically overcome racism and measles, and we see how that turned out in the U.S.

notorandit a day ago | parent | prev | next [-]

Again?

1 kB is 1024 B. It's measurement unit thing. Not logics. 8 bits in a byte. Not 10, neither 6 nor 5. Just 8.

Like feet in yards, inches in feet, meters in kilometers and ounces in pounds.

It's 1024. Period.

Then of course you are free to count as many bytes as you want and call that bunch a kB.

Pretending anyone else will agree on that is a different thing.

breezykoi a day ago | parent [-]

Then of course you are free to count 1024 bytes and call that a kB. Pretending everyone else will agree on that is a different thing.

NetMageSCW a day ago | parent [-]

Everyone else has already agreed.

arjie 2 days ago | parent | prev | next [-]

It is good that the old ways have not been forgotten. We used to argue about tabs vs. spaces, GPL vs. BSD, Linux vs. BSD, FreeBSD vs. NetBSD, BSD 2 clause vs BSD 3 clause. It's important to complain about things pointlessly. Builds character.

Anyway, here's my contribution to help make everything worse. I think we should use Kylobyte, etc. when we don't care whether it's 1000 or 1024. KyB. See! Works great.

Out_of_Characte 2 days ago | parent | prev | next [-]

The author doesn't go far enough into the problems with trying to convert information theory to SI Units.

SI units are attempting to fix standard measurements with perceived constants in nature. A meter(Distance) is the distance light travels in a vacuum, back and forth, within a certain amount of ossilations of a cesium atom(Time). This doesn't mean we tweak the meter to conform to observational results as we'd all be happier if light really was 300 000KM/s instead of ~299 792km/s.

Then there's the problem of not mixing different measurement units. SI was designed to conform all measurements to the same base 10 exponents (cm, m, km versus feet inches and yards) But the authors attempt to resolve this matter doesn't even conform to standardised SI units as we would expect them to.

What is a byte? Well, 8 bits, sometimes. What is a kilobit? 1000 Bits What is a kilobyte? 1000 Bytes, or 1024 Bytes.

Now we've already mixed units based on what a bit or a byte even is and the addition of the 8 multiplier in addition to the exponent of 1000 or 1024.

And if you think, hey, at least the bit is the least divisible unit of information, That's not even correct. If there Should* be a reformalisation of information units, you would agree that the amount of "0"'s is the least divisible unit of information. A kilo of zero's, would be 1000. A 'byte' would be defined as containing up to 256 zero's. A Megazero would contain up to a million zero's.

It wouldn't make any intuitive sense for anyone to count 0's, which would automatically convert your information back to base 10, but it does prove that the most sensible unit of information is already what we've had before, that is, you're not mixing bytes (powers of 2) with SI-defined units of 1000

none_to_remain 2 days ago | parent | prev | next [-]

I like how the GNU coreutils seem to have done. They use real, 1024-byte kilobytes by default, but print only the abbreviation of the prefix so it's just 10K or 200M and people can pretend it stands for some other silly word if they want.

You can use `--si` for fake, 1000-byte kilobytes - trying it it seems weird that these are reported with a lowercase 'k' but 'M' and so on remain uppercase.

goodcanadian 2 days ago | parent | next [-]

. . . it seems weird that these are reported with a lowercase 'k' but 'M' and so on remain uppercase.

For SI units, the abbreviations are defined, so a lowercase k for kilo and uppercase M for mega is correct. Lower case m is milli, c is centi, d is deci. Uppercase G is giga, T is tera and so on.

https://en.wikipedia.org/wiki/International_System_of_Units#...

none_to_remain 2 days ago | parent [-]

Of course! I was being silly and just thinking of "k" for the smaller one and "K" for the bigger one.

pif 2 days ago | parent | prev [-]

[flagged]

encomiast 2 days ago | parent | prev | next [-]

I've tried this approach with Lowes when I buy 2x4s. About as effective.

recursive 2 days ago | parent | prev | next [-]

I'm suprised they didn't mention kibibyte. (Edit: they did) There are plenty of applications where power-of-2 alignment are useful or necessary. Not addressing that and just chastising everyone for using units wrong isn't particularly helpful. I guess we can just all switch to kibibytes, except the HDD manufacturers.

nerdsniper 2 days ago | parent | next [-]

We can, but we won't. At least not any time soon. For the foreseeable future, kilobyte will remain an ambiguous term, and kibibyte will very often not be used when someone is referring to 1024 bytes.

AntiRush 2 days ago | parent | prev | next [-]

The second half of the article is entirely about kibibyte and the other IEC units.

dr_zoidberg 2 days ago | parent | prev [-]

It's at the end, in the "What are the standards units?" section.

recursive 2 days ago | parent [-]

So it does. I guess I skimmed a little too hard.

jasperry 2 days ago | parent | prev | next [-]

I agree in principle, but does anyone else feel super awkward saying "mebibyte" and "gibibyte"?

O1111OOO 2 days ago | parent | next [-]

It honestly sounds like how a diaper-wearing baby would mispronounce kilobyte.

"I will not sacrifice my dignity. We've made too many compromises already; too many retreats. They invade our space and we fall back. They assimilate entire worlds with awkward pronunciations. Not again. The line must be drawn here! This far, no further! And I will make them pay for what they've done to the kilobyte!"

nacozarina a day ago | parent | prev [-]

Jibbybyte!

jachee 2 days ago | parent | prev | next [-]

The entire reason "storage vendors prefer" 1000-based kilobytes is so that they could misrepresent and over-market their storage capacities, getting that 24-bytes per-kb of expectation-vs-reality profit.

It's the same reason—for pure marketing purposes—that screens are measured diagonally.

dr_zoidberg 2 days ago | parent [-]

Not sure about that, SSDs historically have followed base-2 sizes (think of it as a legacy from their memory-based origins). What does happen in SSDs is that you have overprovisioned models that hide a few % of their total size, so instead of a 128GB SSD you get a 120GB one, with 8GB "hidden" from you that the SSD uses to handle wear leveling and garbage collection algorithms to keep it performing nicely for a longer period of time.

quotemstr 2 days ago | parent | next [-]

Sounds like an urban legend. How likely is it that the optimal amount over-provisioning just so happens to match the gap between power-ten and power-two size conventions?

wmf 2 days ago | parent | prev [-]

More recently you'd have, say, a 512GB SSD with 512GiB of flash so for usable space they're using the same base 10 units as hard disks. And yes, the difference in units happens to be enough overprovisioning for adequate performance.

NooneAtAll3 2 days ago | parent | prev | next [-]

I automatically assume that people that use KB=1000B want to sell me something (and provide less than promised), so should be aggressively ignored or removed from vicinities

KB is 1024 bytes, and don't you dare try stealing those 24 bytes from me

kalleboo 2 days ago | parent | next [-]

You think the people selling RAM are somehow more virtuous than the people selling hard disks?

https://en.wikipedia.org/wiki/DRAM_price_fixing_scandal

account42 a day ago | parent [-]

No but at lease they are honest about the unit prices they are charging you, even if they prefer you didn't have any other options.

HungryYeti 2 days ago | parent | prev [-]

[dead]

osigurdson 2 days ago | parent | prev | next [-]

Honestly, when working with computers, KiB, MiB, GiB, etc. just makes more sense usually. It is easier to reason about address space and page sizes are often delineated in 4KiB chunks. It does come off like "inside baseball" a little but there are practical reasons for it.

If you really want to come at it from an information theory perspective, even the "byte" is rather arbitrary - the only thing that matters is the number of bits.

the_net 2 days ago | parent | prev | next [-]

Ah, if only I had a dollar for every time I've had to point someone to the a tool like the following when trying to explain the difference between how much "bandwidth" their server has per month (an IEC unit) vs how fast the server connection is (a SI unit): https://null.53bits.co.uk/uploads/programming/javascript/dat...

lr1970 2 days ago | parent | prev | next [-]

<joke> How to tell a software engineer from a real one? A real engineer thinks that 1 kilobyte is 1000 bytes while software engineer believes that there are 1024 meters in a kilometer :-) </joke>

IsTom 2 days ago | parent [-]

I wonder if some day people will use {"joke": ...} instead of <joke>

NetMageSCW a day ago | parent [-]

Why?

drob518 2 days ago | parent | prev | next [-]

A KB is 1024, forever and always. And Pluto is a damn planet. All you kids get off my lawn!

Panzerschrek 2 days ago | parent | prev | next [-]

As I know 1000-based units are used only by hard-drive manufactures to sell hard drives with 930GB capacity as 1TB capactiy-drives.

Thrymr a day ago | parent [-]

How many bits per second does 10 Gb ethernet represent?

pif 2 days ago | parent | prev | next [-]

For all the people commenting as if the meaning of "kilo" was open to discussion... you are all from the United States of America, and you call your country "America", right?

Taniwha 2 days ago | parent | prev | next [-]

Oh sure, and next you'll say a byte is 10 bits ....

deathanatos 2 days ago | parent | next [-]

The word "octet" is absolutely the kibibyte of "bits in a byte".

layer8 2 days ago | parent | next [-]

It’s the French word for “byte”. In France your computer has Ko/Mo/Go.

kstrauser 2 days ago | parent | prev [-]

I can go along with that, mostly. When you say "octet", some old-timer with an IBM 650 can't go whining that kids these days can't even read his 7-bit emails.

layer8 2 days ago | parent | prev | next [-]

From https://archive.org/details/byte-magazine-1977-02/page/n145/...:

“A byte was described as consisting of any number of parallel bits from one to six. Thus a byte was assumed to have a length appropriate for the occasion. Its first use was in the context of the input-output equipment of the 1950s, which handled six bits at a time.”

senfiaj 2 days ago | parent | prev [-]

"byte" doesn't even remotely resemble any decimal prefix, so it's okay. The problem is that prefixes "kilo", "mega", etc. are supposed to be decimal prefixes, but are used as binary. And what's worse, they aren't used consistently, sometimes they really mean decimal magnitudes, sometimes they don't.

sebtron 2 days ago | parent | prev | next [-]

A metric kilobyte is 1000 bytes. An imperial kilobyte, on the other hand, is 5280 bytes.

nayuki 2 days ago | parent [-]

Nah, an imperial kilobyte is 5280 bits. That's way more plausible.

wduquette a day ago | parent | prev | next [-]

Memory has always been measured in binary units. Storage vendors have always measured capacity in decimal units, going back at least to the 80 MB (!) hard drive I paid about $800 for back in the late '80s. It was the first time I ran into a megabyte of storage as 1 million bytes, and gosh I felt cheated.

As a programmer, I think in the binary units.

lkuty a day ago | parent | prev | next [-]

Yes. Go check https://en.wikipedia.org/wiki/Metric_prefix and also https://en.wikipedia.org/wiki/Binary_prefix if you want 1024 bytes.

Cold_Miserable a day ago | parent | prev | next [-]

Its 1024. Hard drive manufacturers should be forced to use the correct metric.

talles 2 days ago | parent | prev | next [-]

I refuse to say "kibibyte" out loud

kazinator 2 days ago | parent | prev | next [-]

kibi can be apocryphally reinterpreted as being from kibishii, Japanese for stricct. E.g. kibishii sensei: strict teacher.

People who say things like kibibyte usually have no sense of humor, and no tolerance for inconsistencies.

ketchi means stingy in Japanese (careful with that word because it is informal and negative). I propose we rename kibibyte to ketchibaito. ketchibaito could also take on a double meaning as denoting badly paid part-time work.

(One word having two meanings: don't that just make the kibibyte people's puny heads explode ...)

layer8 2 days ago | parent | prev | next [-]

Since 1000 is 3e8, I’ll argue that it should be 300000000 bytes.

tunderscored a day ago | parent | prev | next [-]

I suggest the other way around Let's change si units to play nice with powers of two

Let me introduce the kibimeter

cornonthecobra 2 days ago | parent | prev | next [-]

The meaning of kilo, mega, giga, tera, etc. are unambiguous: SI prefixes defined as powers of 10, not 2. 1 TB is 10*12 bytes, not 2*40 bytes.

The misuse of those prefixes as powers of 1024, while useful as shorthand for computer memory where binary addressing means, is still exactly that: a misuse of SI prefixes.

There's now a separate set of base-2 prefixes to solve this, and people need to update their language accordingly.

wat10000 2 days ago | parent | next [-]

Just because an official body gives a single definition doesn't mean it's unambiguous. Real communication isn't bound by official bodies. When I say my computer has 16GB of RAM, that does not mean exactly 16 billion bytes.

I need to update my language accordingly? No thanks. I'll keep saying what I say and nothing will happen.

breezykoi a day ago | parent [-]

Real communication isn't bound by official bodies, but it also doesn't work by everyone "just saying what they say" and hoping for the best...

NetMageSCW a day ago | parent | prev [-]

The use of kilo for 1024 in computers precedes the formalization of kilo as an SI prefix. SI should have used a different prefix instead /s

yencabulator 15 hours ago | parent [-]

Kilo (chili-/chilo-/*kʰehliyoi) is an Ancient Greek/Proto-Hellenic word literally translated as "one thousand". The word can be traced back to Proto-Indo-European, which means it's as old as any language we're aware of, though Proto-Hellenic is when the meaning was fixed to 1000.

2 days ago | parent | prev | next [-]
[deleted]
nacozarina a day ago | parent | prev | next [-]

as a former storage & network sales engineer, debating this was once my life

nice to see the battlefield again, just as I remembered it

letier a day ago | parent | prev | next [-]

It is my impression that topics like this one trend up more often today, then they used to a couple of years ago. I guess hacker news is changing over time.

xboxnolifes 2 days ago | parent | prev | next [-]

ITT: People who will vehemently talk about how everyone should convert to SI metric, except when it pertains to their personal favorite unit.

jiveturkey 2 days ago | parent | prev | next [-]

Looking around their website, they appear to be an enthusiastic novice. I looked around because isn't a hardware architecture course part of any first year syllabus? The author clearly hasn't a clue about hardware, how memory is implemented.

senfiaj a day ago | parent [-]

> "The author clearly hasn't a clue about hardware, how memory is implemented."

I'm the author. Actually I'm quite familiar how memory addressing works, including concepts related to virtual memory / memory paging. Yes, I'm not a "low-level nerd" with deep knowledge in OS, hardware or machine code / assembly, but I know enough basics. And yes, I already mentioned that binary addressing makes more sense in RAM (and most of the hardware), and yes, I would not expect 4000-byte memory pages or disk clusters.

My main points are:

1) Kilo, mega, etc. prefixes are supposed to be base 10 instead of base 2, but in tech industry they are often base 2.

2) But this isn't the worst part. While we could agree on 1024 magnitude for memory, the problem is that it's still used inconsistently. Sometimes kilobyte is 1024 bytes, sometimes it's 1000. And this causes a confusion. In some contexts, such as RAM stick or disk cluster, you can assume base 2, but in some other contexts, such as file size, it's ambiguous. For example, would it be good if Celsius meant different things? I don't think so, it would certainly complicate things.

dmitrygr a day ago | parent | prev | next [-]

the solution is, of course geometric mean. 1KB = sqrt(1000 * 1024) B

TZubiri 2 days ago | parent | prev | next [-]

It's not clear whether you are asking a question, proposing a new standard, or affirming an existing convention.

nacozarina a day ago | parent [-]

Key elements of a successful blog post !

self_awareness 2 days ago | parent | prev | next [-]

I propose we use footbyte, milebyte, inchbyte.

stalfosknight 2 days ago | parent | prev | next [-]

No, it's not. A kilobyte is 1,024 bytes.

assimpleaspossi a day ago | parent | prev | next [-]

This is dumbing down of the science and I know I will be downvoted for stating that fact.

dboreham 2 days ago | parent | prev | next [-]

Just to show that disinformation exists in every field.

jwlake 2 days ago | parent | prev | next [-]

I remember when they invented kibibytes and mibibytes and shaking my head and being like they have forever destroyed the meaning of words and things will be off by 2% forever. And is has been.

astrobe_ 2 days ago | parent | prev | next [-]

... And a hacker is precisely a cyber-criminal.

nottorp a day ago | parent | prev | next [-]

Now if you ask a LLM, a kilobyte is usually 1000 bytes, but can be anything between 970 and 1030...

zephen 2 days ago | parent | prev | next [-]

Nope.

It would be nice to have a different standard for decimal vs. binary kilobytes.

But if Don Knuth thinks that the "international standard" naming for binary kilobytes is dead on arrival, who am I to argue?

https://www-cs-faculty.stanford.edu/~knuth/news99.html

fallingfrog a day ago | parent | prev | next [-]

Yeah so I realize that at some point manufacturers of hard drives started to cheat and claim 10gb hard drives that were actually a bit less, using a 1000kb megabyte as their rationale, but that's just the marketing team engaging in false advertising. There's no reason to dignify such deception by inventing new words. They just lied. A mb is 1024 kbytes and a gb is 1024 mb. Sorry thats just how the math works out. A 16 kb address space can access 64kb or 65536 unique memory locations.

jijijijij 2 days ago | parent | prev | next [-]

Metric prefixing should only be used with the unit bit. There is no confusion there. I mean, if you would equate a bit with a certain voltage threshold, you could even argue about fractional bits.

Approximating metric prefixing with kibi, Mibi, Gibi... is confusing because it doesn't make sense semantically. There is nothing base-10-ish about it.

I propose some naming based on shift distance, derived from the latin iterativum. https://en.wikipedia.org/wiki/Latin_numerals#Adverbial_numer...

* 2^10, the kibibyte, is a deci (shifted) byte, or just a 'deci'

* 2^20, the mibibyte, is a vici (shifted) byte, or a 'vici'

* 2^30, the gibibyte, is a trici (shifted) byte, or a 'trici'

I mean, we really only need to think in bytes for memory addressing, right? The base doesn't matter much, if we were talking exabytes, does it?

HungryYeti 2 days ago | parent | prev | next [-]

[dead]

HungryYeti 2 days ago | parent | prev | next [-]

[dead]

mc32 2 days ago | parent | prev | next [-]

One thing that annoys me is:

Why don’t kilobyte continue to mean 1024 and introduce kilodebyte to mean 1000. Byte, to me implies a binary number system, and if you want to introduce a new nomenclature to reduce confusion, give the new one a new name and let the older of more prevalent one in its domain keep the old one…

gizmo686 2 days ago | parent | next [-]

Because kilo- already has a meaning. And both usages of kilobyte were (and are) in use. If we are going to fix the problem, we might as well fix it right.

mc32 2 days ago | parent [-]

Sure outside of computing in other science it has a meaning but in binary computing traditionally prefix + byte implied binary number quantities.

Many things acquire domain specific nuanced meaning ..

pif 2 days ago | parent | prev [-]

> Why don’t kilobyte continue to mean 1024

Because it never did!

ratrace 2 days ago | parent [-]

Which universe do you hail from? Because nobody except pedants have relented to this demand from non-computer scientists to conform to a standardization that has nothing to do with them or the work they do.

nayuki 2 days ago | parent | prev [-]

> 1 kilobyte is precisely 1000 bytes

Agreed. For the naysayers out there, consider these problems:

* You have 1 "MB" of RAM on a 1 MHz system bus which can transfer 1 byte per clock cycle. How many seconds does it take to read the entire memory?

* You have 128 "GB" of RAM and you have an empty 128 GB SSD. Can you successfully hibernate the computer system by storing all of RAM on the SSD?

* My camera shoots 6000×4000 pixels = exactly 24 megapixels. If you assume RGB24 color (3 bytes per pixel), how many MB of RAM or disk space does it take to store one raw bitmap image matrix without headers?

The SI definitions are correct: kilo- always means a thousand, mega- always means a million, et cetera. The computer industry abused these definitions because 1000 is close to 1024, creating endless confusion. It is a idiotic act of self-harm when one "megahertz" of clock speed is not the same mega- as one "megabyte" of RAM. IEC 60027 prefixes are correct: there is no ambiguity when kibi- (Ki) is defined as 1024, and it can coexist beside kilo- meaning 1000.

The whole point of the metric system is to create universal units whose meanings don't change depending on context. Having kilo- be overloaded (like method overloading) to mean 1000 and 1024 violates this principle.

If you want to wade in the bad old world of context-dependent units, look no further than traditional measures. International mile or nautical mile? Pound avoirdupois or Troy pound? Pound-force or pound-mass? US gallon or UK gallon? US shoe size for children, women, or men? Short ton or long ton? Did you know that just a few centuries ago, every town had a different definition of a foot and pound, making trade needlessly complicated and inviting open scams and frauds?

wvenable 2 days ago | parent | next [-]

> The computer industry abused these definitions because 1000 is close to 1024, creating endless confusion.

They didn't abuse the definitions. It's simply the result of dealing with pins, wires, and bits. For your problems, for example, you won't ever have a system with 1 "MB" of RAM where that's 1,000,000 bytes. The 8086 processor had 20 address lines, 2^20, that's 1,048,576 bytes for 1MB. SI units make no sense for computers.

The only problem is unscrupulous hardware vendors using SI units on computers to sell you less capacity but advertise more.

nayuki 2 days ago | parent [-]

> They didn't abuse the definitions.

Yes they did. Kilo- means 1000 in SI/metric. The computer industry decided, "Gee that looks awfully close to 1024. Let's sneakily make it mean 1024 in our context and sell our RAM that way".

> It's simply the result of dealing with pins, wires, and bits. For your problems, for example, you won't ever have a system with 1 "MB" of RAM where that's 1,000,000 bytes.

I'm not disputing that. I'm 100% on board with RAM being manufactured and operated in power-of-2 sizes. I have a problem with how these numbers are being marketed and communicated.

> SI units make no sense for computers.

Exactly! Therefore, use IEC 60027 prefixes like kibi-, because they are the ones that reflect the binary nature of computers. Only use SI if you genuinely respect SI definitions.

nickm12 a day ago | parent | prev | next [-]

Thank you. I had to scroll way down to find anyone defending using SI prefixes to mean what they mean everywhere else. A decade ago, I decided to alias "du" to "du --si" and not look back. Entire countries have switched from imperial to metric units. Switching to using base 10 for RAM is really just fine.

ValdikSS 2 days ago | parent | prev | next [-]

Well, you're joking, but the entire RAM industry still lists their chips in Gb (gigaBITS) to avoid confusion.

32 Gb ram chip = 4 GiB of RAM.

nayuki 2 days ago | parent [-]

That's still wrong and you've solved nothing. 32 Gb = 32 000 000 000 bits = 4 000 000 000 bytes = 4 GB (real SI gigabytes).

If you think 32 Gb are binary gibibits, then you've disagreed with Ethernet (e.g. 2.5 Gb/s), Thunderbolt (e.g. 40 Gb/s), and other communication standards.

That's why I keep hammering on the same point: Creating context-dependent prefixes sows endless confusion. The only way to stop the confusion is to respect the real definitions.

2 days ago | parent | prev [-]
[deleted]