 This time, we're going to be looking at how we actually store data into memory. When we just have one byte, we have an address, and we can go to that address and just put the one byte that we have into memory. But if we want to store something more than just one byte, we have to decide, well, how are we going to put, say, four bytes from an integer into memory? How do we want to organize those? And we have two options. We can have a big-endian system or a little-endian system, each of which will have a different way of arranging those bytes in memory. Well, okay, we can actually have a third option. We can have a by-endian system. This is one that can operate as either a big-endian system or a little-endian system, just depending on what the operating system would like to use. Usually, there's some additional overhead associated with converting from the type that the architecture is not really set up to use to the type that it actually does use, but it's relatively minor and would allow you to run a larger amount of software on your machine potentially. So in a big-endian system, if I take my 32 bits from a word and I want to store them into memory, then they're going to kind of look like this when I look at them in memory. My address points to the big end of my number. So the first thing that I put in the most significant byte of my number, then I put in the second most significant byte and the third, then the least significant byte. But in a little-endian system, I do the opposite. The address points to the little end of my number. So I put in the least significant byte at the address. When I go to address plus one, I put in the second least significant byte, then the third least significant byte. Then finally, I put in the most significant byte. So there are a couple examples of each of these types of architectures. We've actually built both of them. There's no really good reason to choose one or the other. Big-endian systems were things like the PowerPC, the Motorola 68K. The most prominent little-endian system, though, has been the X86 architecture. A lot of other modern architectures like the ARM architecture are actually designed as by-endian systems, and they can really support either of these two methods. The important thing to remember about endianness is that the name tells you which end of your number that the address points to. In a big-endian system, the address tells you where the most significant byte is. It's telling you where the big end of your number is. In a little-endian system, the address is telling you where the little end of your number is. When you see these laid out in memory, the big-endian system kind of seems natural and normal. We start with low-numbered bytes on the left-hand side of our screen, and they gradually move over to the right-hand side of our screen. But there's no really good reason to choose one or the other. Either one of them will work just fine. We just have to be sure that we're consistent within our architecture as to which of these we're using.