【2025年软考中级】第一章1.1-1.2、计算机硬件+计算机数据表示

计算机系统知识

image-20240322093241860

计算机系统的组成

计算机硬件组成

计算机系统由硬件系统和软件系统组成。硬件由运算器、控制器、存储器、输入设备、输出设备5部分组成;软件由系统软件、应用软件组成。

  • **cpu的组成:**运算器,控制器,寄存器(64位)和内部总线等部件组成

CPU的基本功能:

a) 程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。

b) 操作控制。一条指令功能的实现需要若干操作信号配合来完成,cpu产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。

c) 时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。

以上三个都是控制器,下面是运算器

d) 数据处理——CPU的根本任务,算数运算逻辑运算

此外,cpu还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理

中央处理单元

运算器:对数据进行处理的部件,主要完成算术和逻辑运算

运算器包含:

  • 算数逻辑单元ALU(Arithmetic and logic unit):数据的算数运算和逻辑运算

  • 累加寄存器AC(Accumulator):为ALU提供一个工作区,用来暂存数据(运算结果或源操作数的存放区)

    以上两个常考

  • 数据缓冲寄存器DR(Data Register):写内存时,暂存指令或数据

  • 状态条件寄存器PSW(Program Status Word):存状态标志与控制标志(条形码内如,如溢出标志等)

控制器:从主存中取出指令,并指出下一条指令在主存中的位置,取出的指令经指令寄存器送往指令译码器,经过对指令的分析发出相应的控制和定时信息;

控制器的组成部分为:

  • 程序计数器(pc)Program Counter:存储下一条要执行指令的地址(指针)

  • 指令寄存器(ir)Instruction Register:存储即将执行的指令(操作码和地址码)

    以上两个常考

  • 指令译码器(id)Instruction Decoder:对操作进行分析解释

  • 地址寄存器(ar)Address Register:保存当前cpu所访问的内存地址

  • 计算机硬件的典型结构
    • 单总线结构
    • 双总线结构(以cpu为中心、以存储器为中心)
    • 采用通道的大型系统结构。

计算机周期

各种计算机周期

  1. 时钟频率:xx Ghz

  2. 总线周期:cpu完成一次内存访问(读写)或IO接口操作所需要的时间;一个总线周期通常由n个时钟周期组成

  3. 时钟(振荡)周期:时钟频率(xx Ghz)的倒数,是计算机中最基本、最小的时间单位。如2.4Ghz的时钟周期为1/2.4

  4. 机器(cpu)周期:指完成一个基本操作(如取指、读存储器),以读取一个指令的最短时间来规定cpu周期。其包含多个时钟周期

  5. 指令周期:包含 取值-》分析-》执行 的时间,其可能包含0-多条总线周期

  6. 存储周期:主存储器两次启动操作之间需要的最小时间间隔,即存储器周期时间

其中:时钟周期 < 机器(cpu)周期 ~= 总线周期 < 指令周期

计算机数据表示

存储单位

数据的最小存储单位是bit(比特/位),一个b为一个二进制位(做存储空间的题时一定要转换成二进制先),一个字节(B)为8个二进制位

k、m、g是数量单位,每个单位相差1024倍

b,B是存储单位

即1B=8bit,1kB=8kb

运算方式:不要硬算,化简为2 的幂指数来计算

做题步骤:①先将十六进制的多少位(字节)算出来

②将该十六进制数用2^n n次方的十进制形式表示出来

③根据题目再进行相应的乘法除法运算

R进制

二进制0b十六0x或H

基本概念

  • 数制:r进制
  • 基数:就是每一位的数码可以有多少个数字来表示。其实就是所谓的进制,十进制,基数为十,数码可以取的值有10个,分别是0~9。
  • 数码:该r进制可以使用的符号
  • 数位:个位十位百位
  • 位权:个位数上的1 的权值为 10^0,十位数上的1 的权值为 10^1 ,百位数上的1 的权值为 10^2 。
  • 二进制转八/十六进制:分3/4个一组

    相反同理

  • r进制转十进制:位权展开法,从0,1,2,3…累加

  • 十进制转r进制:取余后从下往上取值

算数逻辑运算

  • 加减乘除

    二进制的除法运算,属于模二运算,模二运算的特点是:没有进位

    模二加法:0+0=0 0+1=1 1+0=1 1+1=0

    模二减法:0-0=0 0-1=1 1-0=1 1-1=0

    模二乘法:0x0=0 0x1=0 1x0=0 1x1=1

  • 二进制的与运算(逻辑乘),用**^**,and,-表示

  • 或运算(逻辑加),用v,+,or表示

  • 异或用一个用O包围的+,**xor,^**表示

    上述的是位运算符,异则是1,编程里,^表示的是异或运算,&才是并

    逻辑运算符

    • 与:^
    • 或:v
    • 非: ¬ \neg ¬

    位运算符

    • 与:&
    • 或:|
    • 异或:^

数据在计算机中的表示方法(机器码和码制)

各种数据在计算机中表示的形式称为机器数0开头表示正号,1开头表示负号小数点隐含表示且不占位置机器数对应的实际数据称为真值。机器数分为无符号数(unsigned)和有符号数(正和负数)。无符号数表示正数。

  • 原码:真值,0开头正,1开头负,默认是8位,没有添0

  • 反码:负数就取反(开头1不动),正数相同

  • 补码:正数相同,负数为反码+1

    负数的补码=原码取反+1;负数的原码同样=补码+1

    补码是为了消除+0和-0

    常用于加减法

  • 移码:=补码,但是开头符号位取反

    常用于浮点数的阶码

机器码能够表示的不同的有符号整数(定点小数)个数
原码2^n - 1 = 2^(n-1) + 2^(n-1) + 1
反码2^n - 1
补码2^n
移码2^n

因为补码负数时+了1,所以原码和反码比补码和移码少一位,补码比他们多一位

例:用8位二进制表示

  • 原码:-127-127共有254+相同的两个0=255个数 = 2^n - 1
  • 反码:-127-127共有254+相同的两个0=255个数 = 2^n - 1
  • 补码:-128-127共有255+两个0=256个数 = 2^n

定点数和浮点数

  • 定点整数:符号真值.(小数点在最右)

  • 顶点小数:符号.真值(小数点在真值前面)

  • 浮点数:N=M*R^e

    N是数符,M是尾数,e是指数(阶码),R是基数(阶码的底)

    浮点数计算方法:

    • 对阶:使次方相同(规则:小变大,增加几位,末尾就移除几位)
    • 尾数计算相加减
    • 结果格式化(负数变成1.0xxxx或正数变成0.1xxxx)

    浮点数所能表示的数值范围是由阶码确定的,所表示的数值精度由尾数决定

    image-20240330185624552

校验码(不考)

  • 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错。
  • 奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2(一个是校验码另一个是本身的错误)。例如:
  • 奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个(+0),则有误(+1)。
  • 偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。

crc冗余校验码

  • CRC的全称是循环冗余校验(Cyclic Redundancy Check)。**CRC只能检错,不能纠错。使用CRC编码,需要先约定一个生成多项式G(x)。**生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除。余数为0,则没有错误;反之则发生错误。

    例:假设原始信息串为10110,CRC的生成多项式为G(x)=x^4+x+1,求CRC校验码。

    (1)在原始信息位后面添0,假设生成多项式的阶为r,则在原始信息位后添加r个0,本题中,G(x)阶为4,则在原始信息串后加4个0,得到的新串为101100000,作为被除数

    (2)由多项式得到除数,多项中x的幂指数存在的位置1,不存在的位置0。本题中,x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到除数10011。

    (3)生成CRC校验码,将前两步得出的被除数和除数进行模2除法运算(即不进位也不借位的除法运算)。**除法过程(好像是异或运算)**如下图所示。

    得到余数1111(余数的位数要和阶数要和r相同)。

    注意:余数不足r,则余数左边用若干个0补齐。如求得余数为11,r=4,则补两个0得到0011。

    该余数也就是crc的校验位

    (4)生成最终发送信息串,将余数(校验位)添加到原始信息后(变成校验码)。上例中,原始信息为10110,添加余数1111后,结果为101101111。发送方将此数据发送给接收方。

    (5)接收方进行校验。接收方的CRC校验过程与生成过程类似,接收方接收了带校验和的帧后,用多项式G(x)来除。余数为0,则表示信息无错;否则要求发送方进行重传。

    注意:收发信息双方需使用相同的生成多项式。

    image-20240330170308072

海明校验码

  • 海明码:本质也是利用奇偶性来检错和纠错的检验方法,构成方法实在数据位之间的确定位置上插入k个校验位,通过扩大码距实现检错和纠错

    设数据位是s位,校验位是j位,则s和j必须满足以下关系:2^j-1>=s+j

    比如一个有10位数海明码,那么它的校验位最大的位数为8

    又比如一个有10位的数据,则至少需要添加4位的校验位才能成为海明校验码

例:求信息1011的海明码

  • 1.校验位的位数和具体的数据位的位数之间的关系

    所有位都编号,从最低位编号(最右边开始),从1开始递增,校验位处于2的n(n=012.....)次方中即处于第1,2,4,8,16,32,.....位上,其余位才能填充真正的数据位,若信息数据为1011,则可知,第1,2,4位为校验位,第3,5,6,7位为数据位,用来从高位开始存放1011,得出信息位和校验位分布如下:

    因此可以得知所有的校验码都比信息位中位数最大的位数要小

  • 2.计算校验码

    将所有信息位的编号都拆分成二的n次表示后,校验位的值=校验的信息位的异或运算,如下图所示:

    上图中,7=4+2+1,表示7由第4位校验位(r2)和第2位校验位(r1)和第1位校验位(ro) 共同校验,同理,第6位数据位6=4+2,第5位数据位5=4+1,第3位数据位3=2+1,

    前面知道,这些2的n次方都是校验位,可知,第4位校验位校验第765三位数据 位,因此,第4位校验位r2等于这三位数据位的值异或,第2位和第1位校验位计 算原理同上.

    计算出三个校验位后,可知最终要发送的海明校验码为1010101(校验位穿插在中间,和信息位组成校验码。不像crc校验位在末尾)

  • 3.检错和纠错原理

    接收方收到海明码之后,会将每一位校验位与其校验的位数分别异或,即做如下三组运算:

    如果是偶校验,那么运算得到的结果应该全为0,如果是奇校验,应该全为1,才是正确,假设是偶校验,且接收到的数据为1011101(第四位出错),此时,运算的结果为:

    这里不全为0,表明传输过程有误(用了偶检验),并且按照r2r1r0排列为二进制100,这里指出的就是错误的位数,表示第100,即第4位出错,找到了出错位,纠错方法就是将该位逆转。

image-20240330165955622

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

houliabc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值