Why does 8gb of ram display like 8192mb and not 8000mb?

397 views

In informatics parts there’s always a little bit more when talking about GB or similars. Why it’s like that?

In: 0

10 Answers

Anonymous 0 Comments

Because data units are binary and a whole value is always a power of two.

ie
1 byte = 8 bits (2^3)
1 kibibyte = 1024 bytes (2^10)
Etc

Anonymous 0 Comments

Computer memory is binary in implementation, so describing it in powers of ten is typically only an approximation. Binary numbers are accurately represented as powers of 2. 8192 is 2^13.

A Megabyte [MB] is 10^6 bytes (1,000,000). A Mebibyte [MiB] is 2^20 bytes (1,048,576).

A Gigabyte [GB] is 10^9 bytes (1,000,000,000). A Gibibyte [GiB] is 2^30 bytes (1,073,741,824) bytes.

When your system indicates 8192 MB available, that is likely not accurate. It probably means that there are 2^33 bytes available (8,589,934,592), which is 2^13 (8192) times 2^20 (1,048,6576), or 8 GiB.

Anonymous 0 Comments

Because that’s what it is

When you buy RAM you’re actually buying 8 GiB(GibiBytes) of RAM since its base 2 so 1 GiB is 1024 (aka 2^10) MiB, and 1 MiB is 1024 KiB.

Your “8 GB” RAM stick is actually 8,589,934,592 (2^33) Bytes in capacity, but that’s an absymal number for marketing so it turns into 8GB and the next level up is 16 GB then 32, 64, 128, 256, 512, and then you hit either 1024 *or* 1 TB, they’re equivalent

Anonymous 0 Comments

2^13. It’s a convention used by Windows to use base 2 to describe the size instead of the more widely accepted base 10 system. For example, by this definition, a kilobyte is 2^10 bytes or 1024.

Anonymous 0 Comments

Capacity on computers is made by doubling the previous size, so each bigger size is a power of two greater than the previous one. 1,2,4,8,16,32,64,128,256,512,1024. When you pass 1000 bytes, they measure it as kilobytes for short, and they drop the small remainder when speaking. 1024 bytes is 1 kilobyte. When you keep doubling 1024 kilobytes is called a megabyte. 1024 megabytes is a gigabyte, then terabyte and petabyte.

So 1gb is 1024 * 1024 * 1024 bytes (1,073,741,824 bytes) which can also be represented as 1,024 mb or 1,048,576 kb.

Generally speaking most hard drives and memory chips are always created in sizes which are powers of two. It’s the most efficient way to make them. That’s a different ELI5 to know why we store data in binary and why powers of two are so important in an efficient binary system.

Anonymous 0 Comments

If you look at memory chips you see the pins sticking out of them. Some of those pins are address lines. Like a street will have house numbers to help you figure out where someone lives, the address lines tell the circuitry inside which data to access.

Each address line can be either 1 or 0, a high voltage or low voltage.

Several of them are arranged so that they form a binary number.

For example, 8 address lines can form a number from 0 to 255, so it can “select” 255 different data addresses.

“`
00000000 – 0
11111111 – 255
“`

Recall that in base 10 or regular numbers, you have 10 “symbols”, 0 to 9.

Then you have place value 1s, 10s, 100s.

1s is just 10^0 ( ten to the zeroth power ), 10 is 10^1, 100 is 10^2. To make a number like 255 you have

“`
2 × 10^2 + 5 × 10^1 + 5 × 10^0 = 200 + 50 + 5 = 255
“`

Still with me?

Now, binary number are just the same, just that it has 2 symbols (0 and 1). And instead of powers of 10, you use powers of 2.

“`
1 × 2^7 + 1 × 2^6 ….. 1 × 2^0 =

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 =

255

“`

8 address bits can access 256 memory locations (0 -255 inclusive)

So 33 address bits can access 8,589,934,592 memory locations.

Its a huge number, so we divide it by a multiple of 2, since its a binary number, so we will get a whole number after division.

1024 is 1KiB

1KiB × 1024 is 1MiB = 1048576

Dividing 8,589,934,592 by 1,048,576 gets us exactly 8,196 MiB

Notice the small i in KiB, MiB, GiB.

We used to call it just plain KB, MB, GB, but more accurately it’s Kibibytes (KiB), Mebibiyes (MiB), Gibibytes (GiB), since Kilo, Mega, Giga are properly powers of 10 in SI units.

For the general public its still KB, MB, GB of course.

TL;DR

because of how computers physically access memory, using bits (electric lines that are on or off), addresses are always powers of 2.

Powers of 2 don’t align with powers of 10.

Bonus:

We use powers of 10 (decimal) only because ancient bony fish had 10 fingers! Imagine our math if we had 4 fingers per hand! Actually it’s called octal.

Bonus++:

Modern computers have 64 bit address lines. Theoretically we could have 16 million Terabyte RAM.

Bonus++:

Bill Gates famously once said 64kB is enough for everybody

Anonymous 0 Comments

Because 1 GB is not 1000 MB. It’s 1024 MB.

This is because 1024 is a power of 2, which is convenient for binary. 1000 is not a power of 2.

Anonymous 0 Comments

Three wires can have eight possible patterns: 000 001 010 011 100 101 110 111.

Four wires can have sixteen possible patterns: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111.

If you want to have ten memory cells, all identified by different patterns, you can’t use three wires because you won’t have enough patterns. You have to use four wires, but then you have some leftover patterns, and then you have to decide: How do you check whether the pattern’s one of the “invalid” leftovers? What do you do if you receive an invalid pattern?

However you answer these questions, you’ll need to build extra circuits to implement your answer, and that is not be free: Invalid pattern handling circuits will need design and testing, use valuable power and area, and take time to operate.

And so it was decided to simply avoid leftover patterns: “Let’s always pick the number of memory cells so we can wire it up without leftover patterns. Therefore we’ll never make memory with ten memory cells, we will always have eight or sixteen.”

In general you have 2x2x2 = 8 patterns for 3 wires, 2x2x2x2 = 16 patterns for 4 wires, 2x2x2x2x2 = 32 patterns for 5 wires, and in general 2x2x … x2x2 = 2^n patterns for n wires. 8192 fits this pattern (8192 = 2^13 ).

[1] Actually 8192 MB in this context 2^33 . One megabyte (MB) is traditionally defined to be 2^20 = 1048576. Except some people got grumpy at the computer people about this definition around in the late 1990’s, because the metric system used by the rest of science defines mega- / M- to mean 1000000. They proposed redefining MB to be 1000000 to be consistent, and instead use [MiB / mebibyte](https://en.wikipedia.org/wiki/Byte#Multiple-byte_units) to mean 1048576. A lot of people thought this was reasonable and changed to the new definitions. A lot of other people ignored the change and continued using the traditional definition. (If you’re, say, selling memory as a commercial product, it doesn’t help that “megabyte” is the word that got embedded in the public consciousness when computers first became popular in the 1980’s and 1990’s, and “mebibyte” is a rather silly sounding word.)

So if you agree with the grumpy people, your 8192 MB is actually 8192 MiB. But “MB” might be displayed by your BIOS, OS, and/or the box your memory came in.

Anonymous 0 Comments

Because:
– 1 bit is the smallest unit in computing.
– 8 bits is a byte.
– 1024 bytes is a kilo-bite (kilo is metric for thousand).
– 1024 kilobytes is a megabyte.
– 1024 megabytes is a gigabyte.
– **8 gigabytes is 8192 megabytes.**

Anonymous 0 Comments

Because computer scientists and technicians needed a way to express larger numbers and decided to borrow the SI prefixes.

But as others have explained, actual digital storage comes in powers of two, so it wasn’t a perfect match. But it was good enough and everyone knew what was meant. Or at least had a good guess—“byte” can mean everything from 5 to 13 bits, depending on the computer you’re talking about.

This was fine for ages, but then hard drive manufacturers noticed they could put higher numbers on their drives if they counted in base 10 and used real SI prefixes. That was quite easy for them, as the capacities of hard drives are determined as “512 bytes x platters x sides x tracks”—and platters, sides and tracks are simply numbers with no powers of twos. So the influence of 512 not being a round number gets lost very quickly when you multiply it up into the billions.

And the very next thing we knew was that the “it’s called a screwturner, you’re not driving on it” people came along and complained about everyone in IT (aside from the hard drive manufacturers) misusing SI prefixes. This then gave us the “kibi”, “gibi”, “schmibi” and whatever prefixes some people insist on. But as those are not universally accepted, it’s now guesswork what someone means when they say “1 kB”—is that 8000 bits, 8196 bits, 10000 bits or 10240 bits?

And now some digression into the original question. Computer memory is addressed using a bundle of wires that can be on or off, giving you the binary representation of the address (see the other replies for details). But that’s not enough to force you to count your memory that way. But what happens next is the interesting part. Memory is made up of multiple chips (unless you have a small computer that doesn’t need more than one chip can provide). So you need to split that address into two parts: (1) the part to select which chip that address is on, and (2) which cell inside that chip it is.

The absolutely simplest to do that is to simply split the wire bundle in the middle. The first 8 wires are the address within each chip, and the other 8 wires select which chip should answer. That is so simple and easy to do that that is exactly how everyone has ever done it. If instead you wanted the first chip to respond to addresses 0 to 999, and the second to 1000 to 1999, you would need to do math on address wires. You’d have to design circuitry that subtracts the base address of each chip from the current address and then checks for which chip the resulting number is between 0 and 999, … that would cost more than the RAM chips, and those are not cheap.

But this now means that each RAM chip has to store exactly as many locations as a specific number of wires can address. In my example, each chip would have 256 addresses. Or with 10 address lines, it would need to store 1024 elements. If you’d build a chip with only 1000 elements, there would be a gap between the addresses each chip handles.

And that’s why memory is always in chunks that can be expressed by powers of two.

Side note 1: Modern memory chips have gotten so big that there now actually is some logic on the motherboard that allows mixing of different sizes, i.e. the address lines are not simply split. This, however, still doesn’t do complex math, but allows stuff like 8+16GB RAM banks to be inserted.

Side note 2: I’ve said before that chips store elements. That’s because what they store really depends on how memory is organised. In the past, each chip only stored single bits. So you’d need 8 chips responding to the same address to have one byte. Then they store 4 bits, allowing you to have only 2 chips per address. Today, with wider data busses, a single element can even be 8 bytes…