Piero Borrelli
Piero Borrelli

Reputation: 1221

How the bits are interpreted in memory

I'm studying the C++ programming language and i have a problem with my book (Programming priciples and practice using C++). What my book says is :

the meaning of the bit in memory is completely dependent on the type used to access it.Think of it this way : computer memory doesn't know about our types, it's just memory. The bits of memory get meaning only when we decide how that memory is to be interpreted.

Can you explain me what does it mean ? Please do it in a simple way because I'm only a beginner who is learning C++ by 3 weeks.

Upvotes: 1

Views: 361

Answers (3)

Augustin Popa
Augustin Popa

Reputation: 1543

As a few people have noted, bits are just a way of representing information. We need to have a way to interpret the bits to derive meaning out of them. It's kind of like a dictionary. There are many different "dictionaries" out there for many different types of data. ASCII, 2s complement integers, and so forth.

C++ variables must have a type, so each is assigned to a category, like int, double, float, char, string and so forth. The data type tells the compiler how much space to allocate in memory for your variable, how to assign it a value, and how to modify it.

Upvotes: 1

Luciano Sclovsky
Luciano Sclovsky

Reputation: 388

A simple example: take the byte 01000001. It contains (as all bytes) 8 bits. There are 2 bits set on (with the value of 1), the second and the last bits. The second has a corresponding decimal value of 64 in the byte, and the last has the value of 1. So they are interpreted as different powers of 2 by convention (in this case 2ˆ6 and 2ˆ0). This byte will have a decimal value of 64 + 1 = 65. For the byte 01000001 itself, there is also an interpretation convention. For instance, it can be the number 65 or the letter 'A' (according to the ASCII Table). Or, the byte can be part of a data that has a larger representation than just one byte.

Upvotes: 2

Mureinik
Mureinik

Reputation: 311448

The computer's memory only stores bits and bytes - how those values are interpreted is up to the programmer (and his programming language).

Consider, e.g., the value 01000001. If you interpret it as a number, it's 65 (e.g., in the short datatype). If you interpret it as an ASCII character (e.g., in the char datatype), it's the character 'A'.

Upvotes: 7

Related Questions