Computer byte order was named after an 18th-century satire about eggs
In 1980, computer scientist Danny Cohen published Internet Engineering Note 137 to resolve the fierce debate over whether microprocessors should store the most significant or least significant byte first. To highlight how absurd the feud was, Cohen borrowed terms from Jonathan Swift's 1726 satire Gulliver's Travels, in which the empires of Lilliput and Blefuscu fight a bloody war over whether soft-boiled eggs should be cracked at the big end or little end.
An 18th-Century Satire Enters Computer Architecture
In Jonathan Swift's 1726 satirical novel Gulliver's Travels, the island nations of Lilliput and Blefuscu engage in a long and bloody conflict over an apparently trivial question: which end of a boiled egg should be broken before eating? Traditional Lilliputian custom dictated breaking eggs at the larger end. However, after a reigning emperor's son cut his finger opening an egg at the big end, the crown published an edict compelling all subjects to break eggs at the smaller end. The decree sparked rebellions, cost an emperor his life, and drove disaffected citizens known as Big-Endians to seek refuge in rival Blefuscu.
On April 1, 1980, computer scientist Danny Cohen adopted Swift's allegory in Internet Engineering Note 137, titled 'On Holy Wars and a Plea for Peace.' At the time, engineers working on computer hardware, operating systems, and networking were locked in an intense, technical disagreement regarding memory organization. Different processor designers had adopted opposing conventions for how multi-byte numbers should be arranged inside memory addresses. Because both sides felt their method was mathematically or logically superior, debates often degenerated into factional disputes. Cohen recognized the parallel to Swift's satire: two camps defending opposing conventions with fierce devotion, even though both approaches were functionally sound.
The Mechanics of Memory and Byte Addressing
To understand why byte ordering became controversial, one must look at how digital computers organize memory. Computer memory is structured as a continuous sequence of numbered storage cells, where each address typically holds an eight-bit unit of data called a byte. An eight-bit byte can represent an integer value between 0 and 255. However, computer programs frequently process much larger numbers, such as 16-bit, 32-bit, or 64-bit integers, which require two, four, or eight contiguous bytes of memory to store.
When an integer spans multiple bytes, those bytes differ in mathematical significance. In a 16-bit binary integer, the most significant byte contains the bits representing the highest powers of two, while the least significant byte contains the lowest powers of two. If that 16-bit number is placed into two consecutive memory addresses, a hardware designer faces an unavoidable choice: should the most significant byte be placed at the lower memory address, or should the least significant byte go first? This ordering convention is known as endianness.
Big-Endian and the Logic of Reading Order
The big-endian convention stores the most significant byte at the lowest memory address, with subsequent bytes following in descending order of significance. In this system, the 'big end' of the number comes first in memory. If a 32-bit number is stored across addresses 0, 1, 2, and 3, address 0 holds the highest-order byte, and address 3 holds the lowest-order byte.
The primary appeal of big-endian design is its alignment with Western reading order and standard mathematical notation. When people write numbers using Arabic numerals, they write the most significant digits first: in the number 1,234, the thousand's place appears on the left, followed by hundreds, tens, and units. When system engineers print out hexadecimal dumps of computer memory from lowest address to highest address, big-endian data appears in the exact order a human expects to read it. Classic computer architectures, including the Motorola 68000 family, the IBM System/360 and System/370, and Sun Microsystems' SPARC architecture, chose big-endian designs.
Little-Endian and Arithmetic Efficiency
The little-endian convention inverts this arrangement, placing the least significant byte at the lowest memory address. In a little-endian system, reading memory from the lowest address upward means encountering the 'little end' of the number first. If the same 32-bit number is stored across addresses 0 through 3, address 0 holds the lowest-order byte, while address 3 contains the highest-order byte.
Little-endian architecture offers concrete advantages for hardware design and arithmetic execution. Elementary arithmetic operations like addition, subtraction, and multiplication naturally begin with the least significant digit, carrying any overflow upward into higher-order positions. When hardware processes bytes sequentially starting from address 0, arithmetic operations can begin immediately on the first byte without waiting to fetch the rest of the word. Little-endian layout also simplifies type conversion: a 32-bit integer and a 16-bit integer sharing the same starting address have their least significant bytes in the exact same location, meaning a system can read a 16-bit subset of a 32-bit value simply by reading the first two bytes.
The Friction of Communication and the NUXI Problem
Endianness caused minimal trouble as long as computers operated as isolated islands. A Digital Equipment Corporation PDP-11 or an Intel-based machine could run little-endian internally, while an IBM mainframe ran big-endian, and software written for one machine had no need to interact directly with the other. The conflict intensified when networks like the ARPANET began linking diverse systems together into interconnected networks.
When multi-byte binary data crossed architectural boundaries, severe misinterpretations occurred. If a big-endian computer sent a 16-bit text string containing the ASCII characters for 'UNIX' across a wire, and a little-endian computer read those bytes in pairs without converting them, the receiving machine might display the word as 'NUXI'. This famous artifact, known as the 'NUXI problem,' illustrated how identical byte sequences carried completely different meanings depending on how each machine indexed multi-byte structures.
In IEN 137, Danny Cohen argued that communication between different machines required a universally agreed-upon standard. Because converting byte order requires extra processor cycles, letting each machine speak its native order would create chaos. The designers of the Internet Protocol suite resolved this by defining 'network byte order' as big-endian. Under this standard, any machine communicating over IP networks must convert its multi-byte header data into big-endian format before transmission, and convert received headers into its local host order.
Mixed Endianness and Modern Bi-Endian Processors
The computing world did not divide neatly into pure big-endian and little-endian systems. Some hardware architectures adopted mixed or middle-endian schemes. The 16-bit DEC PDP-11, for instance, stored 16-bit words in little-endian order. However, when software ran on the PDP-11 using 32-bit integers, the compiler or hardware often arranged the two 16-bit halves in big-endian order relative to one another, creating an alternating sequence of byte significance that differed from both standard formats.
To manage this enduring divide, modern microprocessor architectures frequently support bi-endian operation. Processors based on architectures such as ARM, MIPS, and PowerPC can be configured at boot time or switch during execution to process data in either big-endian or little-endian mode. In the modern consumer computing landscape, little-endian has become dominant on the desktop and mobile devices due to the prevalence of Intel x86, AMD64, and little-endian ARM implementations, yet the big-endian standard remains firmly embedded in network protocols.
Key takeaways
•Computer scientist Danny Cohen coined the terms 'big-endian' and 'little-endian' in 1980 (IEN 137), drawing on Jonathan Swift's satire of an egg-cracking feud to defuse a bitter architectural debate.
•Big-endian systems place the most significant byte at the lowest memory address, matching standard Western left-to-right reading order, while little-endian systems place the least significant byte first.
•Little-endian storage mirrors the mechanical flow of arithmetic operations, allowing carries to be processed sequentially from the lowest address.
•Internet protocols adopted big-endian format as the universal 'network byte order' to eliminate byte-swapping errors like the classic 'NUXI problem' when transmitting data across disparate hardware.