软件设计师-计算机系统知识:1. 计算机系统基础知识
1. 计算机系统基础知识
1.1. 计算机系统硬件基本组成
- 硬件
- 中央处理器(CPU)硬件系统的核心
- 运算器
- 控制器
- 中央处理器(CPU)硬件系统的核心
- 存储器(记忆设备)
内部存储器(速度高,容量小 ): 临时存放程序、数据及中间结果
外部存储器(速度慢,容量大 ): 长期保存程序和数据 。
- 外设(外部设备)
- 输入设备:输入原始数据及各种命令
- 输出设备:输出计算机运行结果
- 软件
1.2. CPU的功能与组成
中央处理单元(CPU):计算机系统的核心部件,它 负责获取程序指令,对指令进行译码并加以执行
1.2.1. CPU的功能
程序控制
:通过执行指令来控制
程序的执行顺序
操作控制
:一条指令功能的实现需要若干个操作信号配合来完成, CPU产生每条指令的操作信号并将操作信号 送往对应的部件,控制相应的部件按指令的功能要求进行操作时间控制
:CPU对各种操作进行时间上的控制,即在指令执行过程中操作信号的出现时间,持续时间及出现的 时间顺序都需要进行严格的控制数据处理
:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利 用。所以,对数据的加工处理也是CPU最根本的任务- CPU还需 对 系统
内部和外部的中断(异常)
做出响应
,进行相应的处理
1.2.2. CPU的组成
(1) 运算器
(是数据加工处理部件,用于完成计算机的各种算术和逻辑运算):运算器所进行的全部操作都是由 控制器发出的控制信号来指挥的,所以它是执行部件
-
功能
- 执行所有算术运算,如加、减、乘、除等基本运算及附加运算。
- 执行所有的逻辑运算并进行逻辑测试,如与、或、非、零值测试或两个值的比较等。
-
组成
算术逻辑单元(ALU)
:负责处理数据
,实现对数据的算术运算和逻辑运算
。累加寄存器(AC)
:简称累加器,是一个通用寄存器。暂存算术运算或逻辑运算的中间运算结果
数据缓冲寄存器(DR)
:暂存指令或数据字或操作数
。状态条件寄存器(PSW)
:保存指令执行后的状态
。
(2) 控制器
- 功能
- 用于控制整个CPU的工作,决定了计算机运行过程的自动化。它
不仅要保证程序的正确执行,而且能够 处理异常事件
- 用于控制整个CPU的工作,决定了计算机运行过程的自动化。它
- 组成
- 指令控制逻辑:要完成取指令、分析指令和执行指令的操作,其过程分为
取指令,指令译码按指令操作 码执行,形成下一条指令地址
等步骤。指令寄存器(IR)
:存放的是从内存中取得指令,就像个中间站一样,不过是存放指令的中间站
程序计数器(PC)
:存放的是指令的地址
,还有计数
的功能地址寄存器(AR)
:存放的是cpu访问内存单元的地址
指令译码器(ID)
:是把操作码解析成
对应的指令操作
- 时序控制逻辑:要为每条指令按时间顺序提供应有的控制信号
- 总线控制逻辑:是为多个功能部件服务的信息通路的控制电路
- 中断控制逻辑:用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU
- 指令控制逻辑:要完成取指令、分析指令和执行指令的操作,其过程分为
(3) 寄存器组
- 分类:专用寄存器(运算器和控制器中的寄存器是专用寄存器)、通用寄存器
1.3. 数据表示
1.3.1. 计算机基本单位
单位 | 符号 | 备注 |
---|---|---|
位(比特) | bit (b) | 计算机最小的存储单位 |
字节 | byte ( B) | 数据表示的最小单位: 1B = 8bit |
千字节 | KB | 1KB = 1024B |
兆字节 | MB | 1MB = 1024KB |
吉字节 | GB | 1GB = 1024 MB |
太字节 | TB | 1TB = 1024GB |
1.3.2. 进制转换
a. 常用进制
进制 | 运算规则 | 标 识 符 |
---|---|---|
二进 制 | 逢二进一: 基数为2,数值部分用两个不同的数字0 、1来表示 | B |
八进 制 | 逢八进一 :基数为8,数值部分用0 、1 、2 、3、4 、5 、6 、7来表示 | O |
十进 制 | 逢十进一:基数为10,数值部分用0 、1 、2 、3、4 、5 、6 、7 、8 、9来表示 | D |
十六 进制 | 逢十六进一:基数为16,有十六种数字符号,除了在十进制中的0至9外,还另外用6个英文 字母A 、B、C 、D 、E 、F来表示十进制数的10至15 | H |
注:当没有下标或后缀时默认为十进制数
b. 非十进制数转为十进制数
(每位上的数码 z 基数的位次方)
-
二进制转换为十进制
(101.1101)2 = 1x22 + 0x21 + 1x20 + 1x2-1 + 1x2-2 + 0x2-3 + 1x2-4 = (5.8125)10 -
八进制转换为十进制
(105.236)8 = 1x82 + 0x81 + 5x80 + 2x8-1 + 3x8-2 + 6x8-3 = (69.30859375)10 -
十六进制转换为十进制
(A27.5C)16 = 10x162 + 2x161 + 7x160+ 5x16-1+ 12x16-2= (2599.359375)10
c. 十进制数转换为非十进制数
整数部分:除N取余,商为0时,将余数倒序输出
小数部分:乘N取整数 ,直至积为0(或满足精度),整数部分正序输出
-
十进制转换为二进制
-
十进制转换为八进制
-
十进制转换为十六进制
d. 二进制与八进制、十六进制的相互转换
- 二进制转为八进制(
三位一组
)
将二进制数从小数点开始
分别向左(整数部分
) 和向右(小数部分
) 每3位
二进制位组成一组
,将每一组 内的3位二进制数转换成八进制数码中的一个数字,按顺序连接起来即得八进制表示。不足3位时,对原数值 用0来补足3位。
例如: (001 011 111 . 001)2 = (137.1)8 - 二进制转为十六进制(
四位一组
)
将二进制数从小数点开始
分别向左(整数部分)
和向右(小数部分)
每4位
二进制位组成一组
,将每一组内 的4位二进制数转换成十六进制数码中的一个数字,按顺序连接起来即得十六进制表示。如果总的位数不是4 的倍数,那么最左面的一组可以少于4位,前面用0来补足4位。
例如: (1111 1111 0100 1011)2 = (FF4B)16
1.3.3. 原码, 反码,补码, 移码
符号位:如果机器字长为n,则最高位(或最左边的第一位是符号位: 0表示正号, 1表示负号
) 。
原码:原码就是符号位加上真值的绝对值
, 即用第一位表示符号 , 其余位表示数值绝对值 . 如果机器字长n=8
数值 | 原码 | 数值 | 原码 |
---|---|---|---|
+0 | 00000000 | -0 | 10000000 |
+1 | 00000001 | -1 | 10000001 |
+127 | 01111111 | -127 | 11111111 |
+45 | 00101101 | -45 | 10101101 |
+0.5 | 0<>1000000 | -0.5 | 1<>1000000 |
反码: 正数的反码与原码相同, 负数的反码则是其绝对值按位取反
。
数值 | 反码 | 数值 | 反码 |
---|---|---|---|
+0 | 00000000 | -0 | 11111111 |
+1 | 00000001 | -1 | 11111110 |
+127 | 01111111 | -127 | 10000000 |
+45 | 00101101 | -45 | 11010010 |
+0.5 | 0<>1000000 | -0.5 | 1<>01111111 |
补码:正数的补码与其原码相同, 负数的的补码则等于其反码的末尾加1
数值 | 补码 | 数值 | 补码 |
---|---|---|---|
+0 | 00000000 (唯一) | -0 | 00000000 |
+1 | 00000001 | -1 | 11111111 |
+127 | 01111111 | -127 | 10000001 |
+45 | 00101101 | -45 | 11010011 |
+0.5 | 0<>1000000 | -0.5 | 1<>1000000 |
移码: 只要将补码的符号位取反便可获得相应的移码表示
。
数值 | 移码 | 数值 | 移码 |
---|---|---|---|
+1 | 10000001 | -1 | 01111111 |
+127 | 11111111 | -127 | 00000001 |
+45 | 10101101 | -45 | 01010011 |
+0 | 10000000 | -0 | 10000000 |
1.3.4. 数值表示范围
机器字长为n时各种码制表示的带符号数的范围
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | - (2n-1-1) ~ + (2n-1-1) | - (1-2-(n-1)) ~ +(1-2-(n-1)) |
反码 | - (2n-1-1) ~ + (2n-1-1) | - (1-2-(n-1)) ~ +(1-2-(n-1)) |
补码 | -2n-1 ~ +(2n-1-1) | -1 ~ +(1-2-(n-1)) |
移码 | -2n-1~ +(2n-1-1) | -1 ~ +(1-2-(n-1)) |
1.3.5. 浮点数表示
N = 尾数x基数指数
例如 3.14 X 103
a. 运算
过程: 对阶 > 尾数计算 > 结果格式化
b. 特点
- 一般
尾数用补码 , 阶码用移码
。 阶码
的位数决定
数的表示范围
,位数越多范围越大。尾数
的位数决定
数的有效精度
位数越多精度越高。对阶
时,小数向大数看齐
。对阶
是通过较小数的尾数算术右移
实现的。
c. 存储格式
1.4. 校验码
1.4.1. 奇偶校验码
可以检错, 不能纠错
通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。
1.4.2. 海明码
可以检错和纠错
在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。 设 数据位 是 n位, 校验位
是 k
位,则n和k必须满足: 2^k^- 1 ≥ n + k
。
1.4.3. 循环冗余校验码 (CRC)
码距为2, 可以检错, 不能纠错
广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码 长度为k+r。
循环冗余校验码是由 两部分组 成的,左边为 信息码(数据)
,右边为 校验码
。若 信息码占k位,则校验码就占n- k位
。其中, n为CRC码的字长,所以又称为( n, k)码。校验码是由信息码产生的,校验码位数越多,该代码的校 验能力就越强。在 求CRC编码
时, 采用 的是模2运算
。