What exactly do people mean when they say the NES was an 8 bit console? I know that a bit in computer terms is a single piece of data that can be 1 or 0, but 8 of these doesn’t sound like enough to do all of the things you’d need to play a game like Mario. So what element of the console was 8 bits?
In: Technology
The “8-bit” refers to the word size, that is how big a piece of data the CPU can work on at once. Now, if you look at 8 bits, that gives you 256 (2^8) possible values… but that can’t be right surely? You always see numbers bigger than that, your XP or money in an RPG. Well you can work on larger values, but it tends to be quite slow, like splitting it into a high number and low number and working on them carefully “Okay, the player has earned 50 Gil… which we add to the 250 in their bag… and that rolled over, so lets add a 1 to the next part of their cash value. Okay they bought something for 2,000 gil, how do I change each part so this works out…” and this takes a lot more instructions and thus more time.
So things generally try to stick to 255 or less, like number of potions you can carry, maximum level, but really it’s about the amount of colours and sprites the system can handle, because putting things on the screen is the hardest job in a console. So for the NES you have 255 ’tiles’ each 8×8 in size, a ? block in Super Mario is 16×16, so there’s 4 tiles used already. You can get more out of tiles by changing the colours, like how the clouds and bushes in Super Mario are the same *tile*, just one is white and one is green.
So the most ELI5 answer is “it can do maths really quickly only if the numbers are 0-255, so keep all the code talking about graphics or things you do all the time below that number”.
The main part is the word size of the CPU. We send 8 bits from memory to the processor. The CPU treats those 8 bits as a number from 0-255, and can do various operations on that number.
Now, you’re right that 0-255 isn’t a lot to work with on its own, but we can use several of these. In a similar way to how we can make a lot of numbers with just the digits 0-9.
People are making it fairly complex or are wrong. 8-bit does mean the “CPU” of it works with 8-bit values directly, which works on values between 0 and 255 in binary. It doesn’t mean it can only use 256 bytes of RAM. For things like graphics, you can see that it is using only a limited set of blocks/palettes which tend to use unique numbers in the 0-255 range telling the sprite engine what tile to draw.
3 might me a brick in super mario, while 1 means air and 20 means a question block. I made the numbers up, but that’s how it works internally.
Eight bit refers to the word width. It means that the major components (CPU, memory) operate using a bus that’s eight bits wide. You can’t pass more than eight bits between components at a time.
Think of it like a highway. It would be eight lanes wide. A toll booth couldn’t deal with any more than eight vehicles at once.
If you want to have a value that requires 16 bits (like a memory address), you can’t. This is why thirty two bit processors were limited to using four gigabytes of memory, they simply couldn’t use addresses for larger amounts.
#ELI5
**Ever see a car [odometer](https://c8.alamy.com/comp/M6YJHP/automobile-analogue-speedometer-and-odometer-M6YJHP.jpg)?**
Let’s look at the top odometer.
How many digits are there? There are six digits there.
What’s the biggest number that odometer can show? It can show anything from 0 to 999,999. Right?
Can you show the number 2,000,000? No, you cannot, because there aren’t enough digits.
Okay so far???
Now imagine a long street. Starcross Street. It’s super duper long, miles long! And there are houses along the street. And all those houses need addresses.
But you’re only allowed six digits on any address. You can only put up to six numbers on the house, to tell people what that address is.
Can there be a 4210 Starcross Street? Yes. That’s only four digits.
Can there be a 2000000 Starcross Street? No. Because that’s more than six digits.
Okay so far???
Computers (including consoles) have memory, we all know that. Every spot in memory has an address.
And just like a house, we need to know the *address* of every spot in memory, so that we can say things like, “Go to 4210 Starcross street (house/memory) and find my top score”.
Wrapping it up…
The NES was “8-bit”.
That’s kind of like saying, there’s a lot of memory on the NES, but the **address of each spot can only go up to 8 digits**.
The NES can have a memory spot with the address 4210, because that’s 4 digits.
But the NES cannot have a memory spot with the address 200,000,000, because that’s 9 digits.
So it’s kind of like saying, how many bits (8-bit, 16-bit, etc) gives you an idea of the biggest address that the system can use. Which also gives you an idea of how much memory there is!
THAT’S THE BASIC IDEA
But beware! Beware! This has been simplified a lot, and is NOT entirely accurate, it’s not entirely true! But for the sake of explaining it, that’s the idea.
EVERYONE: Yes, I used decimal and not binary. That distinction isn’t going to help OP. Please let’s keep things simple in the spirit of ELI5.
The “X bit” term in all cases refers to the word size (=largest single number) the processor can process in one calculation. Modern computers are 64-bit, which means CPUs can handle numbers up to 2^64 – 1 = 18446744073709551615 (just over 18.4 quintillion). An “8-bit” console can handle numbers up to 2^8 – 1 = 255. (The reason you subtract 1 is that 0 counts as the “first” number for computers, so an 8-bit system can handle number inputs between 00000000 and 11111111 in binary notation.)
This means, for instance, the console can only display 256 unique colors at one time, or play 256 distinct sounds, or index up to 256 different tiles/sprites/etc. As you can imagine, this is not a lot of room to work with, so early console programming required you to be VERY VERY efficient with your code and designs. There was zero room for wasted space.
For comparison, the SNES was a 16-bit console, which means it could do calculations up to 2^16 – 1 = 65535. That, as I’m sure you can tell, is a *huge* increase, and is why SNES games can be vastly more complex, detailed, etc. The music can invoke thousands of sounds, the color palette can have thousands of shades, etc. 32-bit is good enough to handle enough colors and sounds that the human senses can no longer distinguish the digital steps between them, but is still somewhat limiting, as it can only handle values up to about 4.29 billion. That sounds like a lot, but as memory and hard drive sizes got very large, it became very limiting. It is unlikely that we will need to switch to 128-bit computers any time in the next century; 18 quintillion is over 4 billion times larger (each step *squares* the previous value.) These days, many people have more than 4 GB of RAM, which exceeds 32-bit. *Nobody*, not even massive supercomputers, has 4.29 *billion* GB of RAM.
Latest Answers