第一部分
程序结构和执行
我们对计算机系统的探索是从学习计算机本身开始的 它是由处理器和储存器子系统组成
在核心部分 我们需要方法来表示基本数据类型 比如整数和实数运算的近似值 然后 我们考虑机器级指令如何操作这样的数据 以及编译器如何将C程序翻译成这样的指令
接下来 研究几种实现处理器的方法 帮助我们更好的了解硬件资源是如何被用来执行指令 一旦理解了编译器和机器代码 我们就能通过编写最高性能的C程序 来分析如何最大化程序的性能 本部分以存储器子系统的设计作为结束
这是现代计算机系统最复杂的部分之一
本书的这一部分将领着你深入了解如何表示和执行应用程序
你将学会一些技巧 他们将帮助你写出安全 可靠并充分利用计算机资源的程序
第二章 信息的处理和表示
我们研究三种最重要的数字表示
无符号unsigned 编码基于传统的二进制表示法 表示大于或等于零的数字 补码two's-complement 编码表示的是 有符号整数的最常见的方式 有符号整数就是可以为正或者为负的数 浮点数floating - point 编码是表示实数的科学计数法的 以二为基数的版本
计算机的表示法是用有限数量的位来对一个数字进行编码 因此 当结果太大以致不能表示时 某些运算就会溢出overflow 另一方面 整数的计算机运算满足人们所熟知的真正整数运算的定律
浮点数运算有完全不同的数学属性 虽然溢出会产生特殊的值+∞ 但是一组正数的乘积总是正的 由于精度有限 浮点运算是不可结合的 整数运算和浮点数运算会有不同的数学属性是因为他们处理数字表示有限性的方式不同---整数的表示虽然只编码一个相对较小的数值范围 但是精确 而浮点数虽然可以编码一个较大的数值范围 但是这种表示只是近似的
我们对这部分内容的处理是基于”