For +90% of web sites I read I only need a "fix font" for the body text and not a full "reader" version of the page.
Tip for those with mobile issues: rotate to landscape and the words get bigger ;)
(That would've been RM; SKB is Stan Kelly-Bootle)
This is because of a mess with where it considered pixels located, where texture samples are considered located, and where, when rasterizing an included pixel, the texture coordinates sampled. See detail at [0].
If your graphics API was blurring all your images, you'd be passionate about that half-pixel offset too.
[0] https://www.gamedev.net/blogs/entry/1848486-understanding-ha...
I understand that it's from Gulliver's Travels where it's about which end to start breaking an egg from - but without knowing this you can easily end up getting this wrong.
The word "End" can also mean any "extremity" and not just the opposite of "beginning". Otherwise phrases "on both ends of the spectrum" wouldn't make sense.
Thus, a positional encoding of a number has one side (end) where the impact of digits is much higher (big) than the other side (end) where the impact is lower (little).
Little end: the side with lower "weight" Big end: the side with higher "weight"
Being "little endian" is a property of the encoding or architecture, not the property of the word. The word is not "little endian", i.e. its "end" is not "little". The encoding is little endian in that it starts with the little end of the word. You're rightly confused because the fact we're now suddenly talking about the start of the word is implicit and based on the assumption that the reader knows Gulliver's tale.
If end means start, then why use this word?
Little endian is in reality little startian and big endian is big startian.
In fact, we could simplify this even further and just call big endian, startian and little endian, just endian.
It's also quite an old terminology which is not going to change.
If we could come up with a new terminology from the start we could find better options.
For example:
* Least/Most Significant First (LSF / MSF) * Low/High Address Least Significant (LALS/HALS)
Etc
u16 x = 1;
u8 * px = (u8 *)&x;
What byte does px point to? LSB orders means that it points to the least significant byte (that has value 1); MSB order means it points to the most significant byte (value 0). int* x; // x is an int-pointer
int *y; // dereferencing y gives an int
int * z; // int multiplied by z
I'm being silly, but floating the the asterisk between the type and the identifier gives me the same feeling as the "array indices start at 0.5" compromise mentioned earlier.(For the record, the second way is the universal and objective truth.)
TLDR: Little endian is better for most data situations (and incidentally is a more natural ordering for humans), so it's good that it won out in the end.
In fact, we can still see the vestiges of the "low order digits first" convention in some languages even today (for example, in German). Even Greek numbers underwent reversals in the early years (earliest known evidence circa 4th century BC).
Remember, too, that most people consider every system that they learn first as "natural". Like it's equally true that historically people did not select base 10 very often. Base 12 and base 60 were both popular as well if they're even using positional numbering at all. Nevermind how long we went in positional numbering without a zero. Is zero then unnatural? I think it must be. Is "naturalness" even virtuous then?
I do not really understand the "Sorting unknown uint-struct blobs" point.
Could you give an example or explain in more detail, what a "unknown uint-struct blob" is?
The odd/even advantage could be put even stronger, because every additional bit you know from the little end gives additional information about the number's divisibility. For example, one bit tells divisibility by two (aka ofd/even), two bits tell divisibility by four, and so on.
struct someblob {
uint64_t timestamp;
uint64_t checksum;
uint32_t item_count;
struct something items[0];
};
Even if you didn't know that a collection of files were structured this way, you could still read, say, the first 128 bits as an unsigned integer and compare them, and they'd just happen to be naturally ordered because the timestamp field grows from right to left, and would have precedence over the "lower 64 bits" of the checksum field.It's a very minor benefit (of dubious real-world utility), but I wanted to be comprehensive :P
It comes from Swift's satire about egg eaters. The end in question was the small or large end of the egg and Big Endians broke the big end with the spoon - i.e. it went into the egg cup small end down.
The -ian suffix here is analogous to Christ-ian or Keynes-ian and has nothing to do with "in".