【问题标题】:How is data written to memory数据如何写入内存
【发布时间】:2016-01-13 19:24:43
【问题描述】:

当我们在内存中存储数据时。 它是如何存储的,因此它可以识别加载时它是什么类型的数据。 我想问的是自然数、整数、字符等数据类型是如何存储在内存中的。因此,以后从内存中提取它们时可以很容易地识别它们。

当我们在记忆中看到时,我们看到的是十六进制数字。 我们如何将这些十六进制数字关联为 ASCII 值或整数值或任何其他等。

【问题讨论】:

  • 没有区别。您必须知道要阅读什么内容以及如何解释数据。
  • 对我来说听起来像是一个家庭作业问题?做一些研究,然后当/如果您遇到困难,我们可以为您提供帮助。

标签: memory store


【解决方案1】:

内存不是以“字符”或“整数”的形式运行的,这些是假定抽象机器的高级概念。

通常但不一定,一个字符只是一个较小的整数,通常是 8 位(但一个字符也可以是 32 位!),它代表一个符号或字母,而不是一个离散的数字。在某些情况下,甚至可以使用可变长度对字符进行编码。

内存以字节(最小的可直接寻址单元)或字组织的位来运行。这些是——你不知道的——在银行里组织的。硬件通常允许以称为“缓存线”的单元进行访问,但这是在您背后秘密发生的事情。
在汇编语言中,您通常可以访问字节和它们的 2 的倍数,有时有特殊的对齐要求(通常还有位操作,但虽然它们只更改一位,但它们仍然可以工作整个字节/字)。

然而,所有这些都不是很有趣,而且对你来说也很不相关。编译器(或解释器)的首要任务是确保当你谈到一个整数或一个字符时,你想要的任何东西都会在另一端出现。如果可能的话,工具也有责任将一个转换成另一个,如果不可能,产生一个错误。
除非您明确强制执行,否则您甚至根本无法确定整数或字符的值是否具有内存位置(它很可能存储在寄存器中)。

您无法区分来自“字符”的某个内存位置的字节与属于“整数”的字节。它们看起来一样。

虽然在大多数语言中可以将一种类型的原始字节作为另一种类型读取,但这不是您通常需要(或应该)做的事情。

【讨论】:

    【解决方案2】:

    由于您的所有数据都是以二进制形式写入的,因此 char a 的写入方式与 int 97 的写入方式之间没有太大区别,因为它们代表相同的二进制字符串(至少最后一个这些字符串的 8 位)。话虽如此,当您从内存中读取时,您读取的是数据类型,通过该类型,您知道应该如何解释数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多