首页 > 解决方案 > C++ 关于内存的问题不太复杂

问题描述

当我创建一个像这样的角色时:

char anything = 'x';

这在内存中占用 8 位,它的位模式可能看起来像01111000.

现在,我的问题是,计算机如何准确地知道这是一个字符?

还有一个问题,这个角色'x'真的曾经在任何地方写过吗?还是计算机只是将其转换为二进制存储,然后当我想将变量用于任何事物时,它只是将该二进制转换回字符x

标签: c++

解决方案


计算机如何确切地知道这是一个字符?

它没有。就计算机而言,它只是内存中的任意数字(在本例中为十进制 120)。只有您的代码才能说明该数字所代表的含义。

这个角色'x'真的在任何地方都写过吗?

不,它只是该数字的人类可读表示。

还是计算机只是将其转换为二进制存储,然后当我想将变量用于任何事物时,它只是将该二进制转换回字符x

就像我说的,它只是记忆中的一个数字,仅此而已。当您读取该值并将其解释为特定数据类型时,该数字对该类型具有意义。例如,如果您将数字 120 读入 a char,它代表字符'x'。如果您将相同的数字 120 读入一个int8_t(或更大),它表示一个整数 120。如果您将相同的数字 120 读入一个包含位掩码的字节,它表示一组标志位 3-6 打开且位 0 -2 和 7 关闭。等等。


推荐阅读