返回介绍

6.3 在更大的区域中表示完整含义

发布于 2024-12-15 23:01:45 字数 1208 浏览 0 评论 0 收藏 0

上述这些被我们的语言称为“基础数据类型”。这包括两个部分,一是与位宽相关的,例如 Byte,它是计算系统的直接映射;二是与应用环境相关的,例如 Char,它与该系统对外的表示有关 7 。它们事实上本身就是对数据的结构化表达,最明显的就是浮点数的组合型表示方式,又例如字符的顺序型表示方式。但总的来说,这些基础数据类型,总是能“挤”在一个最大位宽的表示单元中去。

换而言之,就是在连续空间中表示 完整含义

然而就最初的需求来说,所谓 完整含义 是我们对数据而不仅仅是对于数的假设。例如,下面的数据是有完整含义的:

Hello World!

但这个数据如何在连续空间中表达呢?从自然形式的理解来看,它是 12 个字符。因此即使以每 8 位表示一个字符而言,它需要 96 个位。对于“顺序地址存储”来说,在 32/64 位机器中,即使能通过一个地址来找到它,也无法一次将它全部取到 CPU 中去运算。但是,它本身又的确是连续而完整的,我们不能孤立地从其中的一个部分来理解它。由此产生了一个问题:我们——程序员以及计算环境——该如何理解超过“(有限大小的) 区域 ”的数据呢?

答案是:有一个 起始地址连续 区域。

这里的起始地址与此前的“顺序地址存储”中的地址是同一概念,但“连续”性也必须体现为数值才能为计算系统所理解。因此对于这样的数据,我们需要两个数值来定义:地址、(连续的)长度。现在,由于有了“长度”的概念,因此我们通过“顺序地址存储”可能得到的数据就有了非常大的变化:

  • 其一,可以找到的最后的数据的位置索引不变,仍然是 232-1;
  • 其二,可以从该位置识别的最大可能值是一个 0…232-1 长度的连续区域 8

或许你现在已经想到了“指针”(pointer)?不,我们现在还没有讨论到它。我们仅仅在讨论一个连续的存储结构,例如数组、字符串或结构体。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文