Definition

big-endian and little-endian

Contributor(s): Diethard Ohrt

Big-endian and little-endian are terms that describe the order in which a sequence of bytes are stored in computer memory. Big-endian is an order in which the "big end" (most significant value in the sequence) is stored first (at the lowest storage address). Little-endian is an order in which the "little end" (least significant value in the sequence) is stored first. For example, in a big-endian computer, the two bytes required for the hexadecimal number 4F52 would be stored as 4F52 in storage (if 4F is stored at storage address 1000, for example, 52 will be at address 1001). In a little-endian system, it would be stored as 524F (52 at address 1000, 4F at 1001).

IBM's 370 mainframes, most RISC-based computers, and Motorola microprocessors use the big-endian approach. TCP/IP also uses the big-endian approach (and thus big-endian is sometimes called network order). For people who use languages that read left-to-right, this seems like the natural way to think of a storing a string of characters or numbers - in the same order you expect to see it presented to you. Many of us would thus think of big-endian as storing something in forward fashion, just as we read.

On the other hand, Intel processors (CPUs) and DEC Alphas and at least some programs that run on them are little-endian. An argument for little-endian order is that as you increase a numeric value, you may need to add digits to the left (a higher non-exponential number has more digits). Thus, an addition of two numbers often requires moving all the digits of a big-endian ordered number in storage, moving everything to the right. In a number stored in little-endian fashion, the least significant bytes can stay where they are and new digits can be added to the right at a higher address. This means that some computer operations may be simpler and faster to perform.

Language compilers such as that of Java or FORTRAN have to know which way the object code they develop is going to be stored. Converters can be used to change one kind of endian to the other when necessary.

Note that within both big-endian and little-endian byte orders, the bits within each byte are big-endian. That is, there is no attempt to be big- or little-endian about the entire bit stream represented by a given number of stored bytes. For example, whether hexadecimal 4F is put in storage first or last with other bytes in a given storage address range, the bit order within the byte will be:

 01001111

It is possible to be big-endian or little-endian about the bit order, but CPUs and programs are almost always designed for a big-endian bit order. In data transmission, however, it is possible to have either bit order.

Eric Raymond observes that Internet domain name addresses and e-mail addresses are little-endian. For example, a big-endian version of our domain name address would be:

 com.whatis.www

Big-endian and little-endian derive from Jonathan Swift's Gulliver's Travels in which the Big Endians were a political faction that broke their eggs at the large end ("the primitive way") and rebelled against the Lilliputian King who required his subjects (the Little Endians) to break their eggs at the small end.

This was last updated in September 2005

Continue Reading About big-endian and little-endian

Dig Deeper on Network Administration

Join the conversation

1 comment

Send me notifications when other members comment.

Please create a username to comment.

Ok, but it works as follows: When you store a number in "little endian" order, you store the number "thousand" as 1000, which means that the most significant digit is stored at the left,  and that will be the "forward" most people know about. This is so like it that a "left shift" operation of 1 << 8 will actually move the 1 from a less significant position to a most significant position. However in the case of "big endian" hardware, the same operation is stored inverse to how it's read so if you "left shift" too much you end up with the bit stored at the byte that is at THE RIGHT. SO as they were unable to simply understand how to inverse their thinking in the x axis, they inverted the way numbers are universally stored and called that "the forward way". A very damaging consequence caused by some people with too much money in their hands but that were unable to fully understand a simple concept.

I believe that your problem and that of most people who think that 0001 is read as "a thousand" is that they believe that a computer works with words and paragraphs when it actually works with numbers and as such when a number is incremented it adds digits to the left and not to the right as when you're writing a text. I believe that this is a problem because the average programmer of today don't know much what a computer is and how it works and they still get jobs for teaching at universities.

That's why Intel became so successful, by developing computers that work with numbers as if they were numbers.

Cancel

-ADS BY GOOGLE

File Extensions and File Formats

Powered by:

SearchSDN

SearchEnterpriseWAN

SearchUnifiedCommunications

SearchMobileComputing

SearchDataCenter

SearchITChannel

Close