- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
6.3 在更大的区域中表示完整含义
上述这些被我们的语言称为“基础数据类型”。这包括两个部分,一是与位宽相关的,例如 Byte,它是计算系统的直接映射;二是与应用环境相关的,例如 Char,它与该系统对外的表示有关 7 。它们事实上本身就是对数据的结构化表达,最明显的就是浮点数的组合型表示方式,又例如字符的顺序型表示方式。但总的来说,这些基础数据类型,总是能“挤”在一个最大位宽的表示单元中去。
换而言之,就是在连续空间中表示 完整含义 。
然而就最初的需求来说,所谓 完整含义 是我们对数据而不仅仅是对于数的假设。例如,下面的数据是有完整含义的:
Hello World!
但这个数据如何在连续空间中表达呢?从自然形式的理解来看,它是 12 个字符。因此即使以每 8 位表示一个字符而言,它需要 96 个位。对于“顺序地址存储”来说,在 32/64 位机器中,即使能通过一个地址来找到它,也无法一次将它全部取到 CPU 中去运算。但是,它本身又的确是连续而完整的,我们不能孤立地从其中的一个部分来理解它。由此产生了一个问题:我们——程序员以及计算环境——该如何理解超过“(有限大小的) 区域 ”的数据呢?
答案是:有一个 起始地址 的 连续 区域。
这里的起始地址与此前的“顺序地址存储”中的地址是同一概念,但“连续”性也必须体现为数值才能为计算系统所理解。因此对于这样的数据,我们需要两个数值来定义:地址、(连续的)长度。现在,由于有了“长度”的概念,因此我们通过“顺序地址存储”可能得到的数据就有了非常大的变化:
- 其一,可以找到的最后的数据的位置索引不变,仍然是 232-1;
- 其二,可以从该位置识别的最大可能值是一个 0…232-1 长度的连续区域 8 。
或许你现在已经想到了“指针”(pointer)?不,我们现在还没有讨论到它。我们仅仅在讨论一个连续的存储结构,例如数组、字符串或结构体。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论