1. 计算机基础知识
数据的表示
进制转换
- 其他进制转十进制:
按权展开法
。以数码✖️位权的形式求和即可。 - 十进制转其他进制:
短除法/除基取余法
。以数值除基数,余数从下向上记录即可。 - 十进制转二进制:
凑位权法
或短除法
。所需位权位置记作1,无需位权位置记作0,即为二进制结果。 - 二进制转八进制:
分组法
。2³=8
,3位二进制一组,每组使用二进制转十进制。 - 二进制转十六进制:
分组法
。4位二进制1组,转为十六进制数码即可。 - 十六进制转二进制:
逆分组法
。每位数码转4位二进制即可。
码制(源码/反码/补码/移码)
各种数值在计算机中表示的形式称为机器数
,其特点是采用二进制计数制
,数的符号用0
和1
表示,小数点则隐含
,表示不占位置。机器数对应的实际数值称为数的真值
。
机器数有无符号位
和带符号位
之分。无符号表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则表示纯整数;若约定小数点的位置在机器数的最高位之前,则表示纯小数。对于带符号数
,机器数的最高位表示正、负的符号位
,其余位则表示数值。
为了便于计算
,带符号的机器数
可采用源码、反码和补码等不同的编码方式,机器数的这些编码方法称为码制
。
浮点数的表示
算数与逻辑运算
校验码
码距
码距(Hamming Distance)是用于量化两个等长字符串或二进制码之间差异的度量方式。具体来说,码距是两个码字(或字符串)中相应位置上不同的符号(或比特)的数量。
码距的计算
假设我们有两个二进制码字 A 和 B,它们的码距 d(A,B) 定义为:
其中:
- ∑ 表示求和。
- i 从 1 到 n 遍历,n 是码字的长度。
- Ai 和 Bi 分别表示码字 A 和 B 的第 i 个比特。
- ⊕ 表示异或操作(XOR)。
计算步骤
假设我们有两个二进制码字 A=1011101 和 B=1001001,我们要计算它们的码距:
- 将两个码字按位对齐:
A: 1011101
B: 1001001
- 逐位进行异或运算:
1 ⊕ 1 = 0
0 ⊕ 0 = 0
1 ⊕ 0 = 1
1 ⊕ 1 = 0
1 ⊕ 0 = 1
0 ⊕ 0 = 0
1 ⊕ 1 = 0
- 记录异或结果:
结果: 0010100
- 统计结果中1的数量:
0010100 中有 2 个 1
所以,码字 A=1011101 和 B=1001001 之间的码距 d(1011101,1001001)=2。
码距的意义
码距可以帮助我们理解编码系统的错误检测和纠正能力。更大的码距意味着编码系统能检测和纠正更多的错误。
奇偶校验码
奇偶校验码是一种简单的错误检测机制,用于确保数据在传输或存储过程中没有发生错误。它通过在数据中添加一个额外的位(称为校验位)来实现。根据数据的奇偶性质,校验位可以帮助检测到单个比特错误。 奇偶校验码的类型:
- 奇校验(Odd Parity) :如果数据中1的数量是偶数,则校验位设置为1,使得总的1的数量变为奇数;如果数据中1的数量是奇数,则校验位设置为0,使得总的1的数量仍然为奇数。
- 偶校验(Even Parity) :如果数据中1的数量是奇数,则校验位设置为1,使得总的1的数量变为偶数;如果数据中1的数量是偶数,则校验位设置为0,使得总的1的数量仍然为偶数。
奇偶校验码的原理
奇偶校验码的原理基于对数据中二进制位(bit)数量的奇偶性(Parity)进行检测和比较。具体步骤如下:
-
数据准备:将要发送或存储的二进制数据准备好,例如,数据为
1011001
。 -
计算校验位:
- 奇校验(Odd Parity) :计算数据中1的数量。如果数量为偶数,则校验位设为1;如果数量为奇数,则校验位设为0。这样,总的1的数量保持为奇数。例如,对于数据
1011001
,1的数量是4(偶数),所以校验位设为1,使总的1的数量变为5(奇数)。 - 偶校验(Even Parity) :计算数据中1的数量。如果数量为奇数,则校验位设为1;如果数量为偶数,则校验位设为0。这样,总的1的数量保持为偶数。例如,对于数据
1011001
,1的数量是4(偶数),所以校验位设为0,使总的1的数量保持为4(偶数)。
- 奇校验(Odd Parity) :计算数据中1的数量。如果数量为偶数,则校验位设为1;如果数量为奇数,则校验位设为0。这样,总的1的数量保持为奇数。例如,对于数据
-
数据传输或存储:将原数据和计算好的校验位一起传输或存储。例如,数据
1011001
(奇校验)会变成10110011
,数据1011001
(偶校验)会变成10110010
。 -
接收端校验:
- 接收端收到数据和校验位后,再次计算数据中1的数量,并根据奇偶校验的规则检查计算出的结果与接收到的校验位是否匹配。
- 如果匹配,说明数据传输或存储过程中没有发生单比特错误;如果不匹配,说明数据中发生了单比特错误。
例子:
假设我们要传输数据1101010
,我们采用奇校验:
-
计算校验位:原数据中有4个1(偶数),所以校验位设为1。传输的数据变为
11010101
。 -
数据传输:传输
11010101
。 -
接收端校验:
- 接收到数据
11010101
。 - 计算数据中1的数量:5个1(奇数)。
- 校验位是1,总数是奇数,符合奇校验规则,数据无误。
- 接收到数据
如果数据在传输过程中发生单比特错误,例如变为11010100
:
-
接收端校验:
- 接收到数据
11010100
。 - 计算数据中1的数量:4个1(偶数)。
- 校验位是1,总数是偶数,不符合奇校验规则,检测到错误。
- 接收到数据
通过这种方式,奇偶校验码可以有效地检测到单比特错误,但无法检测到多比特错误或纠正任何错误。
CRC循环冗余校验码
CRC的编码方式是:在k位信息位
之后拼接r位校验码
。
- 发送方把
k位信息位
对生成多项式G(X)
经过循环模二除法
得到r位校验位
。此时k+r位的校验码对生成多项式G(X)经过循环模二除法,结果为0。 - 接收方拿到校验码后,对生成多项式G(X)经过循环模二除法,
结果为0则数据无误
。否则,只要有任意个数据位错误,结果都不为0
。 - 不同位置的数据出错,结果可能相同,所以无法纠错。
海明校验码
海明校验码,可检错,也可纠错。
缺点: 计算复杂。
海明校验码的原理:在有效信息位中加入几个校验位形成海明码,使码距比较均匀的拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误,还能指出错误的位置,位自动纠错提供了依据。
海明码校验位的数量
公式:2ʳ≧ m+r+1
。r是校验位数量,m是信息位数量。
例:求信息1011的海明码。
(1)2ʳ=4+r+1,确定校验码为3
位:2³≧ 4+3+1。
分别放在2⁰=1、2¹=2、2²=4位
。
(2)列出校验位公示。
找出数据位和哪些校验位有关:7=2²
+2¹+2⁰,6=2²
+2¹,5=2²
+2⁰,3=2¹+2⁰;
再列出校验位值
的计算公式:
- r₂和7、6、5有关,r₂=I₄⊕I₃⊕I₂;
- r₁和7、6、3有关,r₁=I₄⊕I₃⊕I₁;
- r₀和7、5、3有关,r₀=I₄⊕I₂⊕I₁;
(3)根据公式得
- r₂=1⊕0⊕1=0,
- r₁=1⊕0⊕1=0,
- r₀=1⊕1⊕1=1
(4)将数据加入表格,如表所示。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 位数 |
---|---|---|---|---|---|---|---|
I₄ | I₃ | I₂ | r₂ | I₁ | r₁ | r₀ | 信息位 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 校验位 |
答案:D、B
总结
校验码位数 | 校验码位置 | 检错 | 纠错 | 校验方式 | |
---|---|---|---|---|---|
奇偶校验 | 1 | 一般拼接在头部 | 可检奇数个错 | 不可纠错 | 奇校验:最终1的个数是奇数;偶校验:最终1的个数是偶数个; |
CRC循环冗余校验 | 生成多项式最高次幂决定 | 拼接在信息位尾部 | 可检错 | 不可纠错 | 模二除法 求余数,拼接作为校验位 |
海明校验 | 2ʳ≧ m+r+1 | 插入在信息位中间 | 可检错 | 可纠错 | 分组奇偶校验 |
2. 计算机组成
CPU的组成
答案:A
存储系统
层次化存储结构
答案:C
答案:A
Cache
1. 直接相联映射
主存中任意区的0页,都和Cache的0页对应映射。以此类推。
- 优点:设计简单、低成本
- 缺点:冲突率很高
2. 全相联映射
主存任意一块可以放到Cache任意一块。
- 优点:冲突低
- 缺点:复杂高、成本高
3. 组相联映射
先分组,组和组之间是直接相连,组内是全相连。
- 优点:降低了冲突率
答案:D
答案:A
总结
主存编址
- 1B=8bit
- 1KB=1024B
- 1MB=1024KB
- 1GB=1024MB
1GB=2³³bit,以bit进行编址是不合适的,所以基础单位不是按照bit来的,有可能以1B为单位,也可能以4B为单位存储。
答案:D、B
I/O数据传输控制方式
对于计算机来说,CPU会去执行进程,进程不可能什么都有,进程可能要从外部接收数据,也可能要把数据输出去,所以cpu在执行过程中肯定要和外设进行打交道,这个时候会存在一个问题,外设的速度是比较慢的,而cpu是极快的,那cpu在执行某一个需要用到外设的进程的时候,cpu是等待外设执行后进行执行吗?这种方式叫做
程序控制(查询方式)
,它是一种串行
的方式,它是可以的,只是销量很低。
程序控制(查询)方式
:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
那CPU和外设并行
执行的方式有哪些呢?
软件
的方式
程序中段方式
:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
硬件
的方式
DMA方式
:DMN方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。 (DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。)- 通道方式
- I/O处理机
总线周期
CPU对存储器和I/O接口的访问,是通过总线实现的。通过把CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间称为一个总线周期
总线:
计算机的部件有很多,每个部件和每个部件之间搞一条专门的线显然是不现实的,所以它就搞出一个公共的线路,这个公共线路就是总线
。并行执行CPU和外设的时候,数据传输需要使用总线。
中断处理过程
- CPU在不断的处理进程,有一些进程在处理一些比较耗时的I/O操作,所以CPU会把这些进程挂起来,挂起来总得找一个数据结构存储,这样的数据结构就叫做
中断向量表
。 - CPU在执行A进程的过程中,B进程的I/O处理已经完成,中断处理(本质是一个软件)检测到I/O处理已经完成,它就向CPU发送一个
中断请求信号
。 - CPU接到中断请求后,保存正在执行的现场(保护现场),打断的程序当前位置即为
断点
,目的是为了返回回来可以继续执行。 - (通过中断向量表)转入I/O中的服务程序的执行,完成I/O系统的数据交换
- 返回被打断的程序继续执行(恢复现场)
答案:B
答案:B、C
总线系统
答案:C
3. 指令系统
寻址系统
总结
速度最快的是立即寻址
,然后你数据比较多
,必须放在主存
里面,希望灵活性好
可以选择主存间接寻址
,你数据不多
的情况,选择寄存器
,希望灵活性好
可以选择寄存器间接寻址
答案:A
CISC与RISC
答案:B
流水线技术
实践公式:每段时间都按照最长的给,不用就空着。
答案:90、4、理论:45;实践:48
答案:10/45、1/4
答案:A
答案:D
4. 可靠性
答案:B
答案:A