《深入理解计算机系统(第三版)》第二章 信息的表示和处理

《深入理解计算机系统(第三版)》第二章 信息的表示和处理

??计算机本身是由处理器和存储器子通过系统组成。在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值。然后,我们考虑机器级指令如何操作这样的数据,以及编译器又如何将C程序翻译成这样的指令。接下来,研究几种实现处理器的方法,帮助我们更好的了解硬件资源如何被用来执行指令。理解了编译器和机器级代码,我们就能了解如何通过编写C程序以及编译它们来最大化程序的性能。本章主要使我了解了如何表示和执行应用程序,通过一些技巧,来写出安全、可靠且充分利用计算资源的程序。知识点比较琐碎,下面是我通过本章的学习得到的一些收获:

1、三种最重要的数字表示:

  • 无符号:基于传统的二进制表示法,表示大于或者等于零的数字;
  • 补码:表示有符号(可正可负)整数的最常见的方式;补码编码具有唯一性;无符号数编码也具有唯一性。
  • 浮点数:表示实数的科学记数法的以2为基数的版本。

补码与无符号数间的转换如图:

2、信息存储:程序将存储器视为一个字节数组,叫做虚拟存储器,数组中每个字节都有一个数字来标识,这个数字就是地址,所有可能的地址的集合叫做虚拟地址空间。虚拟地址空间是给程序提供的概念性映像,实际的实现是将RAM、硬盘、特殊硬件和OS软件结合起来。 编译器和运行时系统通过各种机制来分配和管理程序不同部分的存储,比如程序数据、指令、控制信息等。

3、指针是C语言的一个重要特性,它也有两个方面:

  • 值:表示某个对象的位置;
  • 类型:表示那个位置上所存储对象的类型(比如整数或者浮点数)。

对于任何数据类型T,声明T p; 表明p是一个指针变量,指向一个类型为T的对象。例如, char p;就将一个指针声明为指向一个char类型的对象。

4、十六进制表示法: 使用数字‘0’~‘9’以及字符‘A’~‘F’来表示16个可能的值。以ox或0X开头的数字常量,字符不区分大小写。

5、寻址和字节顺序:占多个字节的对象,解析它需要确定两个方面:对象地址,字节在存储器中如何排列

一般情况下,对象地址使用字节序列的最小地址

字节顺序有两种规则:小端法和大端法。

  • 小端法就是低地址(地址值越大)对应高位;
  • 大端法就是高地址(地址值越小)对应高位。

如下所示,变量x地址为0x100,十六进制值为0x01234567,地址范围是0x100 - 0x103,,大端和小端表示法分别如下:

6、布尔代数:二进制值是计算机编码、存储和操作信息的核心,所以围绕数值0和1也称为布尔代数。

7、强制类型的转换:无论指针以前是什么类型,强制转换它指向一个数据类型为unsigned char的指针。其结果保持位值不变,只是改变了解释这些位的方式。 但是强制转换也有一些缺陷,比如函数getpeername的安全漏洞。它的问题就是由于数据类型的不匹配造成的:在一个地方,长度参数是有符号数;而另一个地方,它又是无符号数,这样的不匹配会造成缺陷,甚至会导致安全漏洞。

8、整数运算:有符号数的运算在底层实际上执行和无符号数完全相同的指令,不过有符号数可能正溢出,也可能负溢出,当a、b都小于0,但他们的和大于0时发生负溢出,当a、b都大于0,但和小于0时发生正溢出。

??溢出可能会带来意想不到的后果。比如XDR库中饭的安全漏洞,XDR库是一个广泛使用的、程序见共享数据结构的工具,造成这个安全漏洞的原因是程序会在毫无察觉的情况下产生乘法溢出,超出的字节超越已分配的缓冲区的界限,因而破坏了其他的数据结构,这会导致程序崩溃或者行为异常。

9、IEEE浮点数表示:IEEE标准中指定浮点运算行为方法的一个优势在于,它可以独立于任何具体的硬件或者软件实现。

使用(-1)^s * M * 2^E 的形式表示一个数:

  • 符号(sign)s决定该数的正负
  • 尾数(significant)M是一个二进制小数
  • 阶码(exponent)E对浮点数加权,权重是2的E次幂(可能是负数次幂)

一个二进制数被划分成3个字段来表示上诉形式:

  • 单独的符号位s,编码符号s
  • k位的阶码字段exp,编码阶码E
  • n位小数字段frac,编码尾数M,编码出的值依赖于阶码字段的值是否为0

二进制小数:二进制小数点像左移动一位相当于这个数被2除。例如101.11表示数5·3/4

10、使用整数运算满足结合律、交换律和分配律。必须非常小心的使用浮点计算,因为浮点运算只有有限的范围和精度,而且并不遵守普遍的算数属性,比如结合律。

时间: 2024-08-05 06:11:59

《深入理解计算机系统(第三版)》第二章 信息的表示和处理的相关文章

高项3.7日第一次课,第一章信息化基础知识与第二章信息系统服务管理梳理

第一章 信息化的基础知识 1.国家信息化体系要素: 主要包括6要素,信息技术应用(龙头).信息资源(关键).信息网络(必要手段).信息技术产业(基础).信息化人才(成功之本).信息化法规政策和规范(保障). 2.电子政务: 电子政务建设的指导原则: (1)统一规划,加强领导. (2)需求主导,突出重点. (3)统一规划,拉动产业. (4)统一标准,保障安全. 主要任务: (1)电子政务网络由政务内网和政务外网构成,两网之间物理隔离,政务外网与互联网之间逻辑隔离.政务内网主要是副省级以上政务部门的

深入理解计算机系统 第二章 信息的表示和处理

欣哥划重点: @所有人, 第二章比较难,我建议至少掌握下面几个知识点: 1. 字节顺序 : 大端和小端 2. 运行 图2-24, 图2-25程序 show-bytes.c 观察结果,看看有什么问题 3. 理解布尔运算,位运算 4. 理解无符号数和有符号数, 给一个数,能计算出补码 5. 理解浮点数的表示法,给一个十进制小数,能转换成二进制的浮点数表示 原文地址:https://www.cnblogs.com/stone94/p/9824395.html

深入理解计算机系统读书笔记之第二章信息的表示和处理

这一章读完,嗯,感觉怎么说呢? 就是读完了而已,没有想第一章那样,有具体的一些收获什么的.可能是没有很认真的阅读.读的很匆忙,有的内容很晦涩难懂............ 不管怎样还是在写一写自己的收获吧 这一章讲的是信息的表示和处理, 信息在系统中是怎样表示的呢?就是以字节来进行存储.信息就是位+上下文(第一章里面讲的) 具体的信息是怎样表示的? 带符号整数,不带符号整数,浮点数,等等. 1位运算 移位,向右移位 x>>k 分为两种形式 (1)逻辑上,向右移位就是在左端添加k个零[an-1,a

《深入学习计算机系统(C语言)》学习进程之第二章信息的表示和处理

计算机有时候是无法精确表示现实世界中的数字的,一个是因为计算机表示数字所要用到的bit是有限的,另外一个原因则是有些数字本身无法用计算机的(二进制)表示法来存储,例如0.1.0.2等等. 在面向对象的编程语言中,C++本身是建立在C的基础之上的,它们使用完全相同的数字表示和运算,且C标准的设计允许多种实现方式,而Java标准在数据的格式和编码上是非常精确具体的. 2.1  信息存储 字节是最小的可寻址的存储器单位,而不是在存储器中访问单独的位.机器级程序将存储器视为一个非常大的字节数组,即虚拟存

[CSAPP笔记][第二章信息的表示和处理]

信息的表示和处理 2.1 信息存储 机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器. 存储器的每个字节由一个唯一的数字表示,称为它的地址 所有可能地址的集合称为虚拟地址空间 2.1.1 十六进制表示法 python 中十六进制的转变方法 a=15; print(hex(a)) //print:0xf 2.1.2 字 字长决定虚拟地址空间的最大大小 32位的是4G(2^32) 2.1.3 数据大小 char *使用了机器的全字长 2.1.4 寻址和字节顺序 小端法:大多数Intel兼容

第二章 信息的表示和处理

1. 三种重要的数字表示 (1)无符号数.有符号数.浮点数 正数的原码.反码以及补码是其本身. 负数的原码是其本身,反码是对原码除符号位之外的各位取反,补码则是反码加1. (2)为什么用补码表示 能够统一+0和-0的表示 采用原码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 000 0000: 采用反码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 111 1111: 采用补码表示,+0的二进制表示形式为0 000 0000,而-0的

深入理解计算机系统 第二章 信息的表示和处理 part2

上一周遗留问题的解决 问题:原码.反码.补码是只针对有符号数吗?无符号数有没有这三种编码方式? 得到的答案:对于无符号数,原码.反码和补码是一致的 进一步,由于有符号数是以补码的形式存储在计算机中的,而无符号数三种编码都是一致的,所以我们可以说,整型数在计算机中是以补码的形式存在的. 参考文章: https://www.jianshu.com/p/ffc97c4d2306 浮点数 对于浮点数,看了刘大的文章<看完这篇文章,你肯定理解什么是浮点数了>之后,知道了两点 1.浮点数是如何存储的 2.

2017-2018-1 20179215 《文献管理与信息分析》第二章

<文献管理与信息分析>第二章读书笔记 ?这章主要讲解信息获取资源和方法:资源主要包括图书类.搜索引擎.社交网络.推送的信息:方法主要包括搜索方法.RSS.交流分享.在这个信息化的时代,图书已经无法满足我们对信息的快速获取要求,只有掌握搜索引擎的正确快速使用方式,我们才能准确及时的获取到我们所需的信息. ?1.本视频主要介绍Google搜索引擎,并且简单比较了四种搜索引擎的优缺点. ?2.google是全球最大的搜索引擎,为了避免输入google.com转化为google.hk 在输入网址后面加

【网络原理】期末复习笔记 第二章 物理层

第二章 物理层 2.1物理层的基本概念 物理层定义:解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是具体的传输媒体. 物理层的主要任务为:确定与传输媒体的接口的特性 机械特性:接口形状,大小,引线数目 功能特性:电压强度决定信号大小 电器特性 :规定电压范围 过程特性:建立连接时各个相关部件的工作步骤. 2.2 通讯模型(通讯的目的是传递数据) 信息:文字/图片/视频 数据:信息在传输之前需要编码,编码之后的信息就是数据 信号:数据在通信线路上传递需要变成光信号.电信号 码元:时间间隔