数据库系统 —— 1.1 计算机系统基础知识

记录自学的过程,分享自己的笔记

1.1 计算机系统基础知识


1.1.1 中央处理单元


计算机的硬件系统由运算器控制器存储器输入设备输出设备5大部件组成。(p1)

数据库系统 —— 1.1 计算机系统基础知识_第1张图片

CPU的组成(p2)

  • 运算器
    功能:
    (1)执行所有的算术运算。如加、减、乘、除等基本运算及附加运算。
    (2)执行所有的逻辑运算并进行逻辑测试。如与、非、或、零值测试或两个值的比较等。

    组成:
    (1)算术逻辑单元ALU):负责处理数据,实现对数据的算术运算和逻辑运算。
    (2)累加寄存器AC):也称累加器。其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如,在执行一个减法运算前,先将被减数暂存在AC中,再从内存储器中取出减数,然后与AC的内容相减,所得的结果送回AC暂存。
    (3)数据缓冲寄存器DR):对内存进行读写操作是,用DR暂时存放由内存储器读写的一条指令或一个数据字。DR的主要作用为:作为CPU和内存、外部设备之间在操作速度上的缓冲,以及数据传送的中转站(CPU处理速度快,但是内存读写速度或者外设速度相比之下较慢)。
    (4)状态条件寄存器PSW):保存根据算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志。如运算结果进行标志(C)、运算结果溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)等。

  • 控制器(p3)
    功能:
    控制器用于控制整个CPU的工作,它决定了计算机运行过程中的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。

    控制器在工作过程中主要使用以下部件:
    (1)指令寄存器IR):当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入IR暂存,指令译码器根据IR的内容产生各种微操作指令,控制其他部件协调工作,完成指令的功能。指令就应存在指令寄存器中,指令包括操作码和地址码。
    (2)程序计数器PC):存放的总是将要执行的下一条指令的地址。程序的执行分为两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此P的内容即是第一条指令的地址。由于大多数指令都是顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移产生,再送入PC。
    (3)地址寄存器AR):保存当前CPU所访问的内存单位的地址。由于内存和CPU存在操作速度上的差异,所以需要使用AR保持地址信息,直到内存读写操作完成为止。
    (4)指令译码器ID):指令包括操作码和地址码两部分。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,然后向操作控制器发出具体的控制信号。

  • 寄存器组(p4)
    (1)专用寄存器:运算器和控制器中的寄存器是专用寄存器,其作用是固定的。
    (2)通用寄存器:用途广泛并可由程序员规定其用途,其数目因处理器不同有所差异。


1.1.2 数据表示和校验


(1)数的进制

二进制是Binary,简写为B。八进制是Octal,简写为O。十进制为Decimal,简写为D。十六进制为Hexadecimal,简写为H

  • 十进制
    (123)D 或者 (123)10

  • 二进制
    (10101001)B 或者(10101001)2

  • 八进制
    (301)O

  • 十六进制
    (13E)H 或者(13E)16

(2)进制的转换

数据库系统 —— 1.1 计算机系统基础知识_第2张图片
注:十进制转二进制/八进制/十六进制方法相同(整除取余法)

例子:
转成几进制就除以几。
十进制100转为二进制:1100100(B)
十进制100转为八进制:144(O)
十进制100转为十六进制:64(H)

注:二进制/八进制/十六进制转十进制方法相同(按权展开法)

例子:
二进制 (10110.01)B —> 1 X 2-2 + 0 X 2-1 + 0 X 20 + 1 X 21 + 1 X 22 + 0 X 23 + 1 X 24 = (22.25)D

八进制(256.3)O —> 2 X 82 + 5 X 81 + 6 X 80 + 3 X 8-1 = (174.375)D

十六进制 (6F8A)H —> 6 X 163 + 15 X 162 + 8 X 161 + 10 X 160

注:八/十六进制转为二进制有简便方法
数据库系统 —— 1.1 计算机系统基础知识_第3张图片

(3)原码、反码、补码、移码

数据库系统 —— 1.1 计算机系统基础知识_第4张图片

  • 原码(p5)

    原码表示法。数值X的原码记为[X],如果机器字长为n(即采用n个二进制表示数据),则原码的定义如下:见课本第五页
    数据库系统 —— 1.1 计算机系统基础知识_第5张图片
    0的原码表示有两种形式:[+0]=0 0000000 [-0]=1 0000000
    也就是说在原码中,00000000和10000000都表示0

    原码可以表示的定点整数范围为:- (2n-1-1) ~ + (2n-1-1)
    可以表示的数的量为: (2n-1-1) X 2 + 1 = 2n -1

  • 反码
    反码表示法。数值X的反码记为[X],如果机器字长为n,则反码的定义如下:见课本第五页
    数据库系统 —— 1.1 计算机系统基础知识_第6张图片
    0的反码表示有两种形式:[+0]=0 0000000 [-0]=1 1111111,也就是说在反码中,00000000和11111111都表示0

    反码可以表示的定点整数范围为:- (2n-1-1) ~ + (2n-1-1)
    可以表示的数的量为: (2n-1-1) X 2 + 1 = 2n -1

    注:原码和反码定点整数的范围和可以表示的数的量都是相同的,补码比原码和反码可以多表示一个数。
    正数的反码和补码就是原码

  • 补码
    补码表示法。数值X的补码记为[X],如果机器字长为n,则补码的定义如下:见课本第六页
    数据库系统 —— 1.1 计算机系统基础知识_第7张图片
    0的补码只有一种表示形式:[+0]=0 0000000 [-0]=0 0000000

    在补码中,10000000表示-128。所以它比原码和反码可以多表示一个数。
    反码可以表示的定点整数范围为:- 2n-1 ~ + (2n-1-1)
    可以表示的数的量为: 2n

    注:设置补码的原因就是统一正0和负0,并且让计算机可以执行减法
    公式:[a-b]=[a] + [-b]

    注:一个数的补码的补码是它的原码
    公式: [[a]]= [a]

  • 移码
    数据库系统 —— 1.1 计算机系统基础知识_第8张图片
    移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。
    在偏移量为2n-1的情况下,只需要将一个数的补码的符号位取反,就可以得到它的移码。

    0的移码也只有一种表示形式:[+0]=1 0000000 [-0] = 1 0000000
    而-128的移码为0 0000000,因此,与补码一样,移码可以表示的定点整数范围为:- 2n-1 ~ + (2n-1-1)
    可以表示的数的量为: 2n

    注:移码只要知道范围和可以表示的数的量即可

数据库系统 —— 1.1 计算机系统基础知识_第9张图片

(4)浮点表示

十进制中,83.125可以表示成102 X 0.83125或者103 X 0.083125等等。

同样地,二进制数1011.10101可以写成24 X 0.101110101或者25 X 0.0101110101。

因此,一个二进制数N我们可以写成一种更加一般的方式:
N = 2E × F

其中,E称为阶码F称为尾数阶码通常为带符号的纯整数尾数带符号的纯小数阶符数符分别是阶码和尾数的符号。

浮点数的表示格式如下:

阶符 阶码 数符 尾数

注:尾数的符号其实就是这个数的符号

注:当小数点的位置改变时,阶码也随着相应改变,因此可以用多种浮点形式表示用一个数。

注:浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。阶码越大,表示数值范围越大;尾数位数越多,表示数值的精度越高。

  • 规格化
    规格化就是将尾数的绝对值限定在区间[0.5 , 1]。通俗地说,规格化的浮点数,小数点后第一位必须是1。

(5)校验码

码距:指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。例如,4位8421码的码距为1,在传输过程中,该代码的一位或者多位发生错误,都将变成另外的一个合法编码,因此这种代码无检错能力。就要引入校验码概念。

  • 奇偶校验码(p10)
    这种方法通过再编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。

    例如,对于奇校验来说,它可以在一个二进制数的末尾或者开头增加一位校验位,它是1或0取决于这个二进制数中1的个数,总之它会使最终组成的数中1的个数为奇数。经过传输之后,一旦合法编码中发生错误,即编码中的1变成了0或0变成了1(这种情况发生了奇数个),则该编码中1的个数的奇偶性就发生了变化,从而就可以知道传输中有错误。

    注:奇偶校验码可以检测代码中奇数位出错的编码,但是不能发现偶数位出错的情况。即如果两个0变成了1,编码中的1 的个数的奇偶性没有发生改变,不能发现错误。

  • 海明码(p11)
    海明码也是利用奇偶性来检错和纠错的校验方法。

    海明码的构成方式是:在数据位之间插入k个校验位,通过扩大码距来实现检错和纠错。设数据位是n位,校验码是k位,则n和k必须满足以下关系:
    2k -1 ≥ n + k(必须记住)
    k取满足该关系的最小值。

例子
设k个校验位为Pk,Pk-1,…,P1,n个数据位为Dn-1,Dn-2,…,D1,D0,对应的海明码就是Hn+k,Hn+k-1,…,H1,那么:
①Pi在海明码的第2i-1 的位置,即Hj = Pi,且j = 2i-1 ;数据位则依序从低到高占据海明码中剩下的位置。
②海明码中的任一位都是由若干个校验位来校验的。其对应关系如下:被校验的海明位的下标等于所有参与校验该位的校验位的下标之和,而校验位则由自身校验。

对于8位的数据位,进行海明校验需要4个校验位(23 -1=7,24 -1=15>8+4)。

  • 循环冗余校验码(CRC)
    它是利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。k+r为CRC码的字长,所以又称为(k+r,k)码。

    CRC编码采用的是模2运算,即异或运算;相异为真,非异为假。
    1 ⊕ 1 = 0
    0 ⊕ 0 = 0
    1 ⊕ 0 = 1
    0 ⊕ 1 = 1

你可能感兴趣的:(数据库)