目录
一.计算机的组成
计算机系统的组成
存储器:计算机中用于保存信息的记忆设备,分为主存和外存(即辅助存储器),主存指主机内的存储器,外存指U盘,光盘等存储设备
控制器: 是发布命令的决策部件,用来协调和指挥整个计算机系统的操作,分为逻辑控制器和微程序控制器。逻辑控制器较复杂,但速度快,微程序控制器简单,但需要执行微程
运算器:计算机中执行各种算术和逻辑运算的部件
计算机运行时,运算器的操作和操作种类由控制器决定,运算的数据来自存储器,得到的结果返回存储器或寄存在运算器内
计算机工作的过程(取数指令)
运算器,控制器和存储器内都有寄存器
运算器内部的寄存器存储的是数据,控制器内部的寄存器器IR存储的是指令,存储器内部的寄存器MAR和MDR存储的可以是指令也可以是数据
PC内存储的是控制器必须知道的下一条指令的地址码,也就是下一条指令在存储体内的位置
分析取数指令的过程:
(PC)->MAR : 先将PC寄存器内下一条指令的位置告诉MAR,让MAR去取出这条指令
M(MAR)->MDR : MAR去存储体中取数据放到MDR中,此时的数据指下一条指令
(MDR)->IR : 将取到的指令放到指令寄存器中
OP(IR)->CU : 将该指令操作码取出进行分析,得到这是一个取数据的指令
Ad(IR)->MAR : 根据取数指令取出目标数据的地址码
M(MAR)->MDR , (MDR)->ACC : 根据地址码到存储体中取到目标数据放入运算器寄存器中运算
计算机五层层次结构
当我们用高级语言写下一个代码后,编辑器会将代码翻译成汇编语言,汇编语言又会被翻译成机器语言,即二进制数字,操作系统根据机器语言作出相关指令,硬件便根据指令解释后的微指令进行相关操作
二.运算原理
进制转换
进制分为二进制,四进制,八进制,十进制,16进制......
高进制转换为二进制采用:除基取余法和乘基取整法(基就是转换为几位的进制,此时基为2)
除基取余法用于整数部分转换
乘基取整法用于小数部分转换
eg:75.3转换为二进制
75转换二进制为:1001011(注意是从下往上写)
0.3转换二进制为:010 ......(注意是从上往下写)
所以75.3转换为二进制为:1001011 . 010.......
BCD码
为实现快速转换,设置了BCD码,典型BCD码为8421码,即位数对应2^3 , 2^2 , 2^1 , 2^0
此外还有2421码,即2^3改为2^1…………
由于8421码只有0到9一共10个数的对应码,而位数共有2^4=16位,所以有6位码是没有用到的
所以对于大于9的数,都要加上6的8421码以找到对应该数的8421码
较验原理和奇校验
码距指A的第一位和B的第一位是否相同,不同加一,逐位比较,计算不同的个数
假设甲给乙发送A和B两组信息,码距1时,乙接收到10时就不能判断是否出错,接收到01也不能判断是A的信息还是B的信息
码距为2时,乙接收到01和10时就能判断出错了
所以码距越大越能够校验出错误
奇校验:保证一段数据中出现奇数个1
eg:00和01,通过奇校验补充后变为100和001,都只有奇数个1
此时接收方只要校对数据若不是奇数个1就能判断出错与否
奇校验只能补充一位,因为补充一位后就已经是奇数个了,再多的补充也没用
但奇校验也有漏洞,当出现偶数位同时变化时
eg:00和01,补充后为100和001,但出现2位同时错误变为111时是检查不出错误的
所以奇校验只能检测出奇数位变化的错误
CRC循环冗余码
为什么要这样求校验码,而不能直接给一个明确的数字?
因为我们想要的校验码是动态的,根据信息码的变化而变化的,一旦信息码出现任何位数的错误便可以利用校验码倒推回去发现错误,所以需要根据一定的规则制定校验码来求他
校验位的计算是对上下两个数进行异或(即相同为0,不同为1)
如1010和1101异或后就为0111,0省略,信息码继续下移组成1110
为什么根据最高次幂为3校验位就一定为3位?
因为当最高次幂为3时,除数(除数为1101,被除数为101001000,商为110101)就一定为4位
当最高次幂为4时,除数就一定为5位,包括4,3,2,1,0次幂五位
又由于商是根据被除数异或后最高位为1或0决定的,当为0时商就取0,为1时,商就取1
所以异或后最高位必定为0进行省略,信息码下移后组成新的被除数,除数为4位,结果省略最高位0后就必定是3位
所以根据这个规则制定的校验码一定是与信息码相匹配的,独一无二的,信息码一变化,校验码就会发生对应的变化从而发现错误