[深入理解计算机系统] 02 信息的表示和处理 笔记

[深入理解计算机系统] 02 信息的表示和处理 笔记

计算机 ComputerScience|计算机原理 ComputerSystem


@ZYX 写于2020年07月12日

第二章 信息的表示和处理

前言

  • 我们研究三种最重要的数字表示
    1. 无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字
    2. 补码(two’s-complement)编码是表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字
    3. 浮点数(floating-point)编码是表示实数的科学记数法的以二为基数的版本
  • 计算机的表示法是用有限数量的位来对一个数字编码,因此,当结果太大以至不能表示时, 某些运算就会溢出(overflow)
  • 浮点运算有完全不同的数学属性。
    • 虽然溢出会产生特殊的值但是一组正数的乘积总是正的
    • 由于表示的精度有限,浮点运算是不可结合的 (3.14+1e20)-1e20==0.0 3.14+(1e20-1e20)==3.14
  • 整数运算浮点数运算会有不同的数学属性是因为它们处理数字表示有限性的方式不同:
    • 整数的表示只能编码一个较小的数值范围,但是这种表示是精确的
    • 浮点数可以编码一个较大的数值范围,但是这种表示只是近似的
  • Java语言创造了一套新的数字表示和运算标准。C标准的设计允许多种实现方式,而Java标准在数据的格式和编码上是非常精确具体的

2.1 信息存储

  • 大多数计算机使用8位的块,或者字节(byte) ,作为最小的可寻址的存储器单位 , 而不是在存储器中访问单独的
    • 虚拟存储器(virtual memory): 机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器
    • 地址(address): 存储器的每个字节都由一个唯一的数字来标识,称为它的地址
    • 虚拟地址空间(virtual address space): 所有可能地址的集合称为虚拟地址空间
      • 这个虚拟地址空间是一个展现给机器级程序概念性映像
        • 实际实现是将随机访问存储器(RAM)磁盘存储器特殊硬件操作系统软件结合起来,为程序提供一个看上去统一的字节数组
      • 接下来的几章,我们将讲述编译器运行时系统是如何将存储器空间划分为更可管理的单元,以存放不同的程序对象(program object)
        • 程序对象:程序数据、指令和控制信息。
        • 这种管理完全是在虚拟地址空间里完成的

2.1.1 十六进制表示法

  • 在C语言中,以Ox或0X开头的数字常量被认为是十六进制的值。
    • 字符‘A’〜‘F’既可以是大写,也可以是小写,甚至是大小写混合
(更多…)
           
[深入理解计算机系统] 01 计算机系统漫游 笔记

[深入理解计算机系统] 01 计算机系统漫游 笔记

计算机 ComputerScience|计算机原理 ComputerSystem


@ZYX 写于2020年07月08日

第一章 计算机系统漫游

前言

  • 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。

1.1 信息就是位+上下文

  • hello程序的生命周期是从一个源程序(或者说源文件)开始的 , 即程序员利用编辑器创 建并保存的文本文件
  • 源程序实际上就是一个由值0和1组成的位(bit) 序列
    • 8个位被组织成一组,称为字节
    • 每个字节表示程序中某个文本字符
      • 大部分系统都使用ASCII来记录字符
      • 这种方式实际上就是用一个单字节大小的整数值来表示每个字符
      • 文本文件:只由ASCII字符构成的文件
        • 二进制文件: 所有其他文件

1.2 程序被其他程序翻译成不同的格式

  • hello程序的生命周期
    1. 从一个高级C语言程序开始,这种形式能够被人读懂
    2. 为了在系统上运行hello.c,每条C语句都被转化为低级机器语言指令
    3. 这些指令按照称为可执行目标程序的格式打包,并以二进制磁盘文件的形式存放起来
      • 目标程序也称为可执行目标文件
  • 编译系统: 四个阶段的程序(预处理器编译器汇编器链接器(更多…)
           
已到首页—已到末页