如何在内存中解释这些位

How the bits are interpreted in memory

本文关键字:解释 内存      更新时间:2023-10-16

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

内存中位的含义完全取决于用于访问它的类型。可以这样想:计算机内存不知道我们的类型,它只是内存。只有当我们决定如何解释记忆时,记忆的片段才有意义。

你能解释一下这是什么意思吗?请用一种简单的方法来做,因为我只是一个初学者,在3周前学习C++。

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

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

一个简单的例子:取字节01000001。它包含(作为所有字节)8位。有2个位设置为开启(值为1),第二个和最后一个位。第二个字节的相应十进制值为64,最后一个字节的值为1。因此,根据惯例,它们被解释为2的不同幂(在这种情况下为2?6和2?0)。该字节的十进制值为64+1=65。对于字节01000001本身,也有一个解释约定。例如,它可以是数字65或字母"A"(根据ASCII表)。或者,字节可以是数据的一部分,其表示形式比一个字节大。

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

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