c++ - C++ 关于内存的问题不太复杂
问题描述
当我创建一个像这样的角色时:
char anything = 'x';
这在内存中占用 8 位,它的位模式可能看起来像01111000
.
现在,我的问题是,计算机如何准确地知道这是一个字符?
还有一个问题,这个角色'x'
真的曾经在任何地方写过吗?还是计算机只是将其转换为二进制存储,然后当我想将变量用于任何事物时,它只是将该二进制转换回字符x
?
解决方案
计算机如何确切地知道这是一个字符?
它没有。就计算机而言,它只是内存中的任意数字(在本例中为十进制 120)。只有您的代码才能说明该数字所代表的含义。
这个角色
'x'
真的在任何地方都写过吗?
不,它只是该数字的人类可读表示。
还是计算机只是将其转换为二进制存储,然后当我想将变量用于任何事物时,它只是将该二进制转换回字符
x
?
就像我说的,它只是记忆中的一个数字,仅此而已。当您读取该值并将其解释为特定数据类型时,该数字对该类型具有意义。例如,如果您将数字 120 读入 a char
,它代表字符'x'
。如果您将相同的数字 120 读入一个int8_t
(或更大),它表示一个整数 120。如果您将相同的数字 120 读入一个包含位掩码的字节,它表示一组标志位 3-6 打开且位 0 -2 和 7 关闭。等等。
推荐阅读
- android - Android 服务不被识别为注册服务,尽管它是
- r - 导出的pdf中的ggplot符号大小
- javascript - 从javascript两个数组到php变量和值
- android - 通过一个 java 类文件进行多项活动
- ms-office - 将图像插入文件夹中的excel单元格
- socket.io - dyld:库未加载:@rpath/SocketIO.framework/SocketIO
- f# - F# 赋值 printf 和 for 循环
- reactjs - Fully include Google web font in create-react-app build (without ejecting)
- python - 循环遍历csv文件并根据条件获取数据
- c# - 如何检查我的程序是否与 C# 中的 MSQL 数据库连接?