CSAPP学习笔记(二)

Posted by HK on January 24, 2019

第二章研究在计算机上如何表示数字和其他形式数据的结伴属性,以及计算机对这些数据执行操作的属性。 要求我们深入研究数学语言,编写数学公式和方程式,以及展示重要属性的推导.

第二章 信息的表示和处理

三种重要的数字表示

  1. 无符号(unsigned)编码:基于传统的二进制表示法,表示大于或者等于零的数字。
  2. 补码(two’s-complement)编码:表示有符号整数。
  3. 浮点数(floating-point)编码:表示实数的科学计数法的以2为基数的版本。

溢出(overflow):运算结果太大以致不能表示时发生溢出(计算机的表示法是用有限数量的位来对一个数字编码)。

信息存储

字节byte(块)一般为8位。byte为最小的可寻址的内存单位,而不是访问内存中单独的位。

  • 虚拟内存(virtual memory):机器级程序所视作的内存(一个非常 大的字节数组)。
  • 地址(address):内存放入每个字节的唯一数字标识。
  • 虚拟地址空间(virtual address space):所有可能地址的集合。

虚拟地址空间只是一个展现给机器级程序的概念性印象。

程序对象(program object):程序数据、指令、控制信息。每个程序对象可以简答地十位一个字节块,而程序本身就是一个字节序列。

十六进制(hexadecimal)。

字数据大小

字长(wordsize)指明指针数据的标称大小(normal size)。

对一个字长为w位的机器而言,虚拟地址的范围为0 -(2^w-1),程序最多访问2^w字节。

32位字长虚拟地址空间为4GB(约为4×10^9字节),64位字长虚拟地址空间为16EB(约为1.84×10^19字节)。

“32位程序”与“64位程序”的区别在于该程序时如何编译的,而不是其运行的机器类型。

寻址和字节顺序

小端法(little endian):在内存中按照从最低有效字节到最高有效字节的顺序存储对象。大端法(big endian):最高有效字节在最前面的方式。

eg.变量x 0x01234567

img

可以通过执行命令 man ascii来得到一张ASCII字符码的表。