如何在内存中解释这些位
How the bits are interpreted in memory
我正在学习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等。数据类型告诉编译器在内存中为变量分配多少空间,如何给它赋值,以及如何修改它
- 将字符串存储在c++中的稳定内存中
- 请解释"函数1(p1,p2,p3);"的输出
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 在内存级别重新解释向量的字节
- std::future::wait 是内存障碍吗?(我无法解释这种数据竞赛)
- Marshal.StructureToPtr出现无法解释的内存泄漏
- 转换基元时的内存解释
- 分配内存并使用 new in C++重新解释指针
- 重新解释cast<是否安全;bool*>清空内存
- C++ Visual Studio - 在简单示例中解释内存泄漏检测
- 如何在内存中解释这些位
- 对C++11内存模型有什么好的解释
- 解释Valgrind内存泄漏总结日志
- 对指向固定大小数组的指针数组的内存分配的解释
- 我可以将键值对的内存映射文件重新解释为映射以便对它们进行排序吗?
- C#中引用类型的内存方面的显式强制转换解释
- 在c++中读取和解释内存页面文件
- 为什么在同一x64机器的2个不同项目上对内存的解释不同?这是Endianness吗?
- 解释DrMemory日志,内存泄漏
- c++内存泄漏解释分析