文章列表

12k11 分钟

# CSAPP 第三章 程序的机器级表示 编译器基于编程语言的规则、操作系统的惯例、目标机器的指令集生成机器代码。 汇编代码是机器代码的一种形式,它是机器代码的文本表示。 高级代码可移植性好,而汇编代码与特定机器密切相关。 能够阅读汇编代码: 好处:可以理解编译器的优化能力,并分析代码中隐含的低效率 条件:了解编译器将高级语言转换为机器代码的转换方式。 精通细节很重要,是理解更深和更基本概念的先决条件。要认真研究示例、完成练习。 32位机器可以使用约 4GB 的随机访问存储器,64位机器可以使用 256TB(2^48) 的内存空间(这里说的是主存)。 # 3.2 程序编码 汇编器产生的目标代
7.2k7 分钟

# CSAPP 第二章 信息的表示和处理 第二章 信息的表示和处理 计算机使用二值信号存储和表示信息 当计算结果太大以至于不能表示时,就会产生溢出。 浮点数表示的精度有限,因而浮点运算是不可结合的。 整数的表示范围小但是精确,浮点数表示的范围大但是是近似的。 许多安全漏洞是由算术运算的微妙细节导致的。 # 2.1 信息存储 计算机一般使用字节作为最小的可寻址的内存单位。 在机器级程序中不包含关于数据类型的信息。 指针的值是某个存储块的第一个字节的虚拟地址。 每个程序对象可以视为一个字节块。 # 2.1.1 十六进制表示法 十六进制以 0x 开头。 A:10;C:12;F:15 # 2.1.2
6.8k6 分钟

# CSAPP 第一章 计算机系统漫游 # 1.1 信息就是位 + 上下文 程序的生命周期从源程序(源文件) 开始。源程序实际上就是由 0 和 1 组成的位序列。 一般用 ASCII 标准来表示文本字符,实际上是用一个字节的整数值来表示一种字符。 源文件中每个文本行都是以看不见的 '\n' 结束的。 只由 ASCII 字符组成的文件成为文本文件,其他都是二进制文件。.cpp 文件就是文本文件。 系统中的所有信息都是由一串比特(bit:位)表示的,区分不同数据对象的唯一方法就是根据上下文。 C 语言的特点 C 语言小而简单 C 语言是为了实现 unix 而设计的 C 语言
7.7k7 分钟

# 堆排序 # 一、堆的知识点笔记 # 1. 堆的基本概念 堆是一种特殊的完全二叉树,通常用数组顺序存储。 堆有两个核心要求: 结构上必须是完全二叉树。 数值上要满足堆的大小关系。 大根堆要求: 父节点 >= 子节点 小根堆要求: 父节点 <= 子节点 大根堆的堆顶是最大值。 小根堆的堆顶是最小值。 # 2. 堆的数组下标关系 如果数组下标从 1 开始: 父节点 i 左孩子 2i 右孩子 2i + 1 如果数组下标从 0 开始: 父节点 (i - 1) / 2 左孩子 2i + 1 右孩子 2i + 2 考试中很多堆题默认下标从 1 开始。