如何在内存中解释这些位

时间:2014-10-03 17:39:48

标签: c++ memory

我正在学习C ++编程语言,我的书有问题(编程原理和使用C ++练习)。我的书说的是:

  

内存中位的含义完全取决于用于访问它的类型。以这种方式思考:计算机内存不知道我们的类型,它只是内存。只有在我们决定如何解释内存时,内存位才有意义。

你能解释一下这是什么意思吗?请以简单的方式进行,因为我只是一个在3周内学习C ++的初学者。

3 个答案:

答案 0 :(得分:7)

计算机的内存只存储位和字节 - 这些值的解释方式取决于程序员(及其编程语言)。

考虑例如值01000001。如果您将其解释为数字,则为65(例如,在short数据类型中)。如果您将其解释为ASCII字符(例如,在char数据类型中),则它是字符'A'

答案 1 :(得分:2)

一个简单的例子:取字节01000001.它包含(作为所有字节)8位。有2位设置(值为1),第二位和最后一位。第二个在字节中具有相应的十进制值64,并且最后一个具有值1.因此它们按惯例被解释为2的不同幂(在这种情况下为26和20)。该字节的十进制值为64 + 1 = 65.对于字节01000001本身,还有一个解释约定。例如,它可以是数字65或字母'A'(根据ASCII表)。或者,该字节可以是具有比仅一个字节更大的表示的数据的一部分。

答案 2 :(得分:1)

正如一些人所指出的,比特只是一种表达信息的方式。我们需要有一种方法来解释这些位以从中获得意义。它有点像字典。有许多不同的词典"那里有许多不同类型的数据。 ASCII,2s补码整数,等等。

C ++变量必须具有类型,因此每个变量都分配给一个类别,如int,double,float,char,string等。数据类型告诉编译器在内存中为变量分配多少空间,如何为其赋值,以及如何修改它。